如果id不为空,则使用mysql计数

时间:2019-05-07 08:18:00

标签: mysql

我想计算响应表中的未读消息。问题是,当根据where语句中的id不存在任何消息时,它将计数为0并返回一行。该行不能返回。有任何解决此问题的建议吗?

SELECT m.*, COUNT(mr.id) as total_unread 
FROM `message` m 
LEFT JOIN message_response mr ON (mr.message_id = m.id) AND mr.read = 0
WHERE m.performance_report_id = :id

如果未找到消息,则返回上述语句。

NULL    NULL    NULL    NULL    NULL    NULL    NULL    0

1 个答案:

答案 0 :(得分:3)

将您的m.performance_report_id = :id放入ON Clause而不是where

SELECT m.*, COUNT(mr.id) as total_unread 
FROM `message` m 
LEFT JOIN message_response mr ON (mr.message_id = m.id) AND mr.read = 0
and m.performance_report_id = :id