我想计算响应表中的未读消息。问题是,当根据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
答案 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