gpt4 book ai didi

mysql - 从关联表中选择行数而不进行子选择

转载 作者:行者123 更新时间:2023-11-29 13:38:09 26 4
gpt4 key购买 nike

我正在尝试编写一个为每个用户返回一行的 SQL 查询。该行必须包含分配给该用户的学校计数以及分配给该用户的所有学校的分数总和。

表格:

users (id, email)
schools (id, user_id, points (int))

用户学校的关系是一对多。

我已经走到这一步了:

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(*) astotal_school 是错误的。它返回用户行数,而不是分配的学校行数。

如何获得该计数?

最佳答案

学校表中的 id/user-id 对是否唯一?如果不是,这就是为什么您可能会返回用户出现在学校的次数。

尝试使用distinct而不是count()。但请注意,如果不适合 count(),则空值将被省略。

select u.id, u.email, 
count(distinct(s.id)) 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

sqlfiddle

关于mysql - 从关联表中选择行数而不进行子选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18499136/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com