为什么这个左连接查询无法加载左表中的所有数据?

时间:2010-03-27 13:43:46

标签: sql mysql left-join

用户表

+-----+-----------+
| 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

2 个答案:

答案 0 :(得分:3)

你不需要group by子句吗?

group by users.username,users.id

对mysql不太了解,但在mssql中,你需要它才能运行

答案 1 :(得分:0)

如果所有用户都被退回,您对group_count列的期望是什么?如果您对没有组的用户预期为零,这看起来很自然,它将如何达到该结果并仍然输出至少一行?