我有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. SQL查询从一个表中获取所有记录,除了特定记录,按日期,从另一个表
- 6. MySQL - 在一个表中计数记录并在另一个表中计数记录
- 7. 的MySQL与另一个表的计数查询选择
- 8. 如何从一个查询中的另一个表中检索一个表中的记录和相关记录?
- 9. MySQL:使用另一个表中的计算更新所有记录
- 10. MySQL查询计算唯一ID,计数记录数和组数(3个表)
- 11. MYSQL - 查找一个表中的记录不存在,在另一
- 12. 从一个表插入所有记录到另一个现有表的sql查询
- 13. MYSQL PHP在两个表中有一个查询的计数行
- 14. 将表格的所有记录插入另一个表格
- 15. MySQL查询同一表中的记录
- 16. 如何显示谁有一个记录时谁加入另一个表有记录的表格记录
- 17. 计算另一张表的匹配记录的一个记录表
- 18. 从另一个表计数[MySQL的]
- 19. 更新另一个表的记录表
- 20. 更新记录从一个表与当前记录的总和加上另一个表记录
- 21. 如何将另一个表中的所有记录用作计数列?
- 22. 记录从一个表到另一个
- 23. 从查询表中获取所有记录的单个查询
- 24. MySQL的加入三表,如果一个表中没有记录
- 25. Rails:上一个查询的上一个和下一个记录
- 26. SQL查询加入一个计数并从另一个表的平均值
- 27. MySQL的:如何查询时ID在另一个表中记录的字段
- 28. 查询来计算记录的确切数目的所有表
- 29. 有效的方法来统计MySQL中的一个查询中的一个表的所有类别的总数?
- 30. 仅当另一个表上的列被更新或新记录添加到另一个表时,才将记录插入到新的MySQL数据库表中?
请后,你有这么远的查询。 – 2010-05-15 10:29:33