用户表
+-----+-----------+
| id | username |
+-----+-----------+
| 1 | tom |
| 2 | jelly |
| 3 | foo |
| 4 | bar |
+-----+-----------+
分组表
+----+---------+-----------------------------+
| id | user_id | title |
+----+---------+-----------------------------+
| 2 | 1 | title 1 |
| 4 | 1 | title 2 |
+----+---------+-----------------------------+
查询
SELECT users.username,users.id,count(groups.title) as group_count
FROM users
LEFT JOIN groups
ON users.id = groups.user_id
结果
+----------+----+-------------+
| username | id | group_count |
+----------+----+-------------+
| tom | 1 | 2 |
+----------+----+-------------+
其他用户的信息在哪里?结果与内连接相同,不应该左连接返回所有左表的数据?
PS:我正在使用mysql
答案 0 :(得分:3)
你不需要group by子句吗?
group by users.username,users.id
对mysql不太了解,但在mssql中,你需要它才能运行
答案 1 :(得分:0)
如果所有用户都被退回,您对group_count
列的期望是什么?如果您对没有组的用户预期为零,这看起来很自然,它将如何达到该结果并仍然输出至少一行?