我有两个基于 ID 号的关联 MySQL 表。我需要选择第一个表中与第二个表中的任何 ID 都不匹配的 ID 数。这是我尝试过的:
SELECT COUNT(DISTINCT(ask_questions.id))
FROM ask_questions
INNER JOIN ask_answers ON ask_questions.id != ask_answers.question_id;
我认为使用“!=”会返回不匹配的结果,但返回的数字不正确。有更好的解决方案吗?
最佳答案
使用 LEFT JOIN
因为你想获得至少在另一个表上没有匹配的 ID
。
SELECT COUNT(DISTINCT(ask_questions.id))
FROM ask_questions
LEFT JOIN ask_answers
ON ask_questions.id = ask_answers.question_id
WHERE ask_answers.question_id IS NULL
要进一步了解有关联接的更多信息,请访问以下链接:
JOIN
的替代方法是使用 NOT EXISTS
SELECT COUNT(DISTINCT(id))
FROM ask_questions
WHERE NOT EXISTS
(
SELECT null
FROM ask_answers
WHERE ask_questions.id = ask_answers.question_id
)
关于mysql - 如何在另一个表列中没有匹配项的情况下选择一个表列的 COUNT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16888869/