SELECT `name` , COUNT(*) AS `count` FROM `t1`, `t2` WHERE `t2`.`id` = `t1`.`id` GROUP BY `t2`.`id`
我想从 t1 获取名称以及 t2 中 id 与 t1 相同的行数。
到目前为止我已经得到了上面的内容,但是如果 t2 中没有匹配的行,它不会返回任何数据。如果没有行,并且名称仍返回,我希望 count
为 0(或 NULL)。
编辑:我希望能够按count
降序排序。 (或name
ASC)这可能吗?
最佳答案
这应该适合你:
SELECT `t1`.`id` , COUNT(`t2`.`id`) AS `count`
FROM `t1` LEFT JOIN `t2` ON `t1`.`id` = `t2`.`id`
GROUP BY `t1`.`id`
Left join 确保您拥有 t1 中的所有行,而 COUNT(t2
.id
) 使其仅计算 t2.id 不为 null 的记录(即 -那些真正存在于 t2 中的)
关于sql - MySQL 跨表计数(*) 查询帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/268107/