小编典典

MySQL跨表计数(*)查询帮助

sql

选择`name`,COUNT(*)AS`count`
从`t1`,`t2`
t2`.id` = t1.id
由`t2`.`id`分组

我想从t1中获取名称,并在t2中获得与ID在t1上相同的行数。

到目前为止,我已经掌握了上述内容,但是如果t2中没有匹配的行,它将不会返回任何数据。count如果没有行,则我希望将其设置为0(或NULL),并且名称仍然返回。

编辑: 我希望能够按count降序排序。(或nameASC)可行吗?


阅读 200

收藏
2021-04-28

共1个答案

小编典典

这应该为您工作:

SELECT `t1`.`id` , COUNT(`t2`.`id`) AS `count`
FROM `t1` LEFT JOIN `t2` ON `t1`.`id` = `t2`.`id`
GROUP BY `t1`.`id`

左联接确保您拥有t1中的所有行,而COUNT(t2id)使其仅计算t2.id不为null的记录(即-t2中确实存在的记录)

2021-04-28