mysql - 对嵌套查询中的特定行进行计数

标签 mysql sql

我正在尝试使用下面的查询来计算特定字段上的记录数。

SELECT COUNT(DISTINCT CASE WHEN seen='n' and reciever_id=1 THEN 'varb' ELSE  'novarb' END) AS count ,c.id, c.vmsg, c.sender_id, p.fname, p.lname, p.profile_pix, p.profile_id
FROM chats c LEFT JOIN profile p  ON c.sender_id = p.profile_id
WHERE c.reciever_id = 1 AND c.id in (SELECT MAX(c.id) as id FROM  chats c
GROUP BY c.sender_id )

但是我得到的答案只返回一条记录,而还有其他数百条记录要显示

最佳答案

如果您使用 varbnovarb,则 dictinct 计数最多为 2,如果有 1,则意味着您只有一个条件

您可能需要计算 varb 条目的数量

SELECT COUNT(
            CASE WHEN seen ='n' and reciever_id=1 
                    THEN 'varb' 
                    ELSE  NULL
            END) AS count ,c.id, c.vmsg, c.sender_id, p.fname, p.lname, p.profile_pix, p.profile_id
FROM chats c 
LEFT JOIN profile p  ON c.sender_id = p.profile_id
WHERE c.reciever_id = 1 AND c.id in (
      SELECT MAX(c.id) as id FROM  chats c
      GROUP BY c.sender_id )

关于mysql - 对嵌套查询中的特定行进行计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43308526/

相关文章:

php - 带数据库的电子邮件重复检查 php

php - "MySql server has gone away"当我增加要添加到表中的数据大小时

Mysql删除后自增

SQL 计数为零值

mysql - 查询以选择当前和之前的小时、日期和月份

mysql - SQL查询以计算相同日期的条目

php - 具有多种功能的产品的数据库设计

SQL Select Distinct Top 2

mysql - 聚合查询删除零

mysql - SQL 显示当年所有周(52)