我使用左连接来计算不匹配的行,但是虽然我的查询是正确的但我有一些逻辑问题。 check this fiddle
查询应返回计数1,而是返回0.我知道原因是因为它找到匹配的行,但我不知道解决问题的其他方法。我需要计算用户看不见的问题。 / p>
答案 0 :(得分:1)
您需要将qv.question_view_id IS NULL
条款作为JOIN
的一部分,而不是WHERE
。
SELECT qt.user_id, count(q.question_id) cnt
FROM questions q
INNER JOIN questions_to qt ON qt.question_id = q.question_id
LEFT JOIN question_view qv ON q.question_id = qv.question_id
-- Not that I've moved this clause into the JOIN condition.
AND qv.question_view_id IS NULL
WHERE qt.user_id = 13
GROUP BY qt.user_id