我有2个表:用户和图片.Picture表具有用户的密钥.所以基本上每个用户可以有多个图片,每个图片属于一个用户.现在,我正在尝试进行以下查询:我想选择所有用户信息加上他拥有的图片总数(即使它是0).我怎样才能做到这一点?可能听起来很简单,但我正在努力尝试,似乎无法找到正确的查询.我唯一可以选择的是这个信息,但仅适用于至少拥有1张图片的用户,这意味着图片表至少有一张该密钥的记录...但我也想考虑没有任何记录的用户.任何的想法?谢谢!
您可能想尝试以下方法:
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);
Run Code Online (Sandbox Code Playgroud)
测试用例:
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);
Run Code Online (Sandbox Code Playgroud)
结果:
+-------+-----+
| name | num |
+-------+-----+
| Joe | 2 |
| Peter | 3 |
| Bill | 0 |
+-------+-----+
3 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3718 次 |
| 最近记录: |