我有2个表:用户和图片。图片表具有用户的键。所以基本上每个用户可以有多个图片,每张图片属于一个用户。 现在,我试图做出以下查询:我想选择所有的用户信息加上他拥有的图片总数(即使它是0)。我怎样才能做到这一点?可能它听起来很简单,但我试图尝试,似乎无法找到正确的查询。我唯一可以选择的就是这个信息,但只适用于至少有1张图片的用户,这意味着Pictures表格至少有一个记录用于该关键字......但我也想考虑没有任何用户的用户。任何想法? 谢谢!MySQL查询:一个表的所有记录加上另一个表的计数
3
A
回答
7
你可能想尝试以下操作:
SELECT u.name,
IFNULL(sub_p.total, 0) num
FROM users u
LEFT JOIN (SELECT COUNT(*) total, user_id
FROM pictures
GROUP BY user_id
) sub_p ON (sub_p.user_id = u.user_id);
测试用例:
CREATE TABLE users (user_id int, name varchar(10));
CREATE TABLE pictures (user_id int);
INSERT INTO users VALUES (1, 'Joe');
INSERT INTO users VALUES (2, 'Peter');
INSERT INTO users VALUES (3, 'Bill');
INSERT INTO pictures VALUES (1);
INSERT INTO pictures VALUES (1);
INSERT INTO pictures VALUES (2);
INSERT INTO pictures VALUES (2);
INSERT INTO pictures VALUES (2);
结果:
+-------+-----+
| name | num |
+-------+-----+
| Joe | 2 |
| Peter | 3 |
| Bill | 0 |
+-------+-----+
3 rows in set (0.00 sec)
2
SELECT u.name, COUNT(p.picture) AS number
FROM User u
LEFT JOIN Picture p
ON u.id = p.userid
GROUP BY p.userid
相关问题
- 1. 如何加入具有所有计数的另一个表的计数查询?
- 2. 快速查询选择不在MySQL的另一个表中的所有记录
- 3. mysql从一个查询中的两个表中统计记录?
- 4. MySQL根据记录总数或另一个表中没有记录查询一个表
- 5. 的MySQL从一个表计数,加入到另一个表
- 6. 另一个表添加到MySQL查询
- 7. SQL查询找到一个记录在另一个表中有所有匹配的记录
- 8. MySQL的高效的所有记录从一个表到另一个
- 9. SQL查询从一个表中获取所有记录,除了特定记录,按日期,从另一个表
- 10. MySQL - 在一个表中计数记录并在另一个表中计数记录
- 11. 的MySQL与另一个表的计数查询选择
- 12. 对另一个表中的所有ID运行MySql查询
- 13. 如何从一个查询中的另一个表中检索一个表中的记录和相关记录?
- 14. MySQL:使用另一个表中的计算更新所有记录
- 15. 选择所有记录从一个表,具体的记录从另一个
- 16. MySQL查询计算唯一ID,计数记录数和组数(3个表)
- 17. MYSQL - 查找一个表中的记录不存在,在另一
- 18. SQL查询来插入另一个表的所有ID相同的记录在一个新的表
- 19. 从一个表插入所有记录到另一个现有表的sql查询
- 20. MYSQL PHP在两个表中有一个查询的计数行
- 21. SQL查询来传输所有记录在另一列在同一个表
- 22. 显示所有记录,如果他们有一个记录在另一个表
- 23. 将表格的所有记录插入另一个表格
- 24. 加入计数从一个表从另一个选择 - mysql的
- 25. SQL Server查询加入一个表,另一个查询的
- 26. MySQL查询同一表中的记录
- 27. 使用左连接从另一个mysql表中计数记录
- 28. 如何显示谁有一个记录时谁加入另一个表有记录的表格记录
- 29. MySQL:使用另一个表中的值计算表中的记录数
- 30. 让现有查询另一个表值的计数的Rails
请后,你有这么远的查询。 – 2010-05-15 10:29:33