我有一个名为comments
的表,其中的列名称为status
(对于活动状态为0,对于活动状态为1),现在我需要选择查询的帮助来分隔两个同时计数0和1的列并按帖子ID列进行分组。
我尝试了两个单独的查询,但这不是最佳选择。我是使用XAMPP 3.2.2的Windows用户。
SELECT postid,count(id)已从注释中获得批准,状态为0 GROUP BY postid;
结果将显示三列(postid
,approved
,disapproved
)
答案 0 :(得分:2)
使用条件聚合:
SELECT
postid,
COUNT(CASE WHEN status = 1 THEN 1 END) AS approved,
COUNT(CASE WHEN status = 0 THEN 1 END) AS disapproved
FROM comments
GROUP BY
postid;
这里的想法是根据postid
的值为每个status
取一个有条件的总和/计数。将此逻辑放在WHERE
子句中的问题是,您无法同时检查那里的两个状态。
答案 1 :(得分:0)
如果值为0和1,则可以将逻辑简化为:
SELECT postid,
SUM(status) as approved,
SUM(1 - status) as disapproved
FROM comments c
GROUP BY postid;