是否有一个查询来检索相同的列值,因为两列取决于数据值

时间:2019-01-07 05:17:26

标签: sql mysqli

我有一个名为comments的表,其中的列名称为status(对于活动状态为0,对于活动状态为1),现在我需要选择查询的帮助来分隔两个同时计数0和1的列并按帖子ID列进行分组。

我尝试了两个单独的查询,但这不是最佳选择。我是使用XAMPP 3.2.2的Windows用户。

  

SELECT postid,count(id)已从注释中获得批准,状态为0 GROUP BY postid;

结果将显示三列(postidapproveddisapproved

2 个答案:

答案 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;