我有两个表,“用户”和“项目”
用户表:
id 用户名
1山姆
2 彼得
3 安迪
项目表:
id 标题 uid
1个pr1 0
2 公关 1
3 公关 3 2
4 公关 4 1
projects.uid 表示将执行该工作的用户 ID,0 表示该项目尚未分配给任何用户。
我想要一个查询来根据用户对项目进行计数和分组并返回如下内容:
uid 项目计数
0 1
1 2
2 1
3 0
由于您没有返回username
,因此您只需要该projects
表:
select u.id, count(*) as project_count
from users u
left outer join projects p on u.id = p.uid
group by u.id
order by u.id
如果你也想要用户名,你可以这样做:
select u.id, u.username, count(*) as project_count
from users u
left outer join projects p on u.id = p.uid
group by u.id, u.username
order by u.id
非常感谢您的回答,但他们似乎都没有返回正确的行,
这是我新找到的答案:
SELECT users.id,(SELECT COUNT(1) FROM projects WHERE projects.user_id = users.id) as 'count' FROM users ORDER BY id
我不太确定它的性能,但目前它可以工作......
select u.id, count(p.uid)
from users u
inner join project p
on u.id = p.uid
group by p.uid