繁体   English   中英

MySql:如何进行子查询并计算两个表中ID相同的所有行

[英]MySql: how to make subquery and count all rows where id is the same in two tables

如何进行查询,而不是全部返回特定ID的值。

    SELECT content.id, count(case likes.type when 'p' then 1 else null end) as p
FROM content
JOIN likes on likes.content_id = content.id

此代码返回:

ID p
1 18

但我想要它:

ID p
1 12
2 4
3 2

添加group by

SELECT content.id, 
       sum(likes.type = 'p') as p
FROM content
JOIN likes on likes.content_id = content.id
GROUP BY content.id

然后将聚合函数(即count() )应用于组,而不是整个结果。

您的查询将在大多数数据库中失败。 问题是在select未汇总content.id ,但是您正在使用聚合函数。

这是一个简单的问题要解决:

SELECT content.id, count(case likes.type when 'p' then 1 else null end) as p
FROM content
JOIN likes on likes.content_id = content.id
GROUP BY content.id;

然而,在一般情况下,你要小心, 总是包含在所有的非聚集列select一个在group by

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM