0
我想寫一個SQL查詢,爲每個用戶返回一行。該行必須包含分配給該用戶的學校計數以及分配給該用戶的所有學校中的分數總和。從關聯的表中選擇行數無子選擇
表:
users (id, email)
schools (id, user_id, points (int))
關係users
到schools
是一個一對多的。
我這個地步得到:
select u.id, u.email,
count(*) as total_schools,
sum(points) as total_points
from users u
left join schools s
on u.id = s.user_id
group by u.id
但是這完全不是那麼回事。 count(*) as total_school
是錯誤的。它返回用戶行的數量,而不是分配的學校行的數量。
我該如何得到這個數字?
再次檢查結果。它應該返回分配的學校數量,除非用戶沒有分配學校。如果用戶可以多次分配到學校,請將COUNT(*)改爲COUNT(s.user_id)或COUNT(DISTINCT s.id)。 –