mysql - 如何在另一个表列中没有匹配项的情况下选择一个表列的 COUNT

标签 mysql sql

我有两个基于 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/

相关文章:

mysql - 如何设置默认字符集?

mysql - 为什么 MongoDB 和 MySQL 比 grep 慢?

mysql - 从每个领域获得总值(value)?

php - 如何摆脱 � 使用 php

MySql order by 与今天的日期相关

php - 使用 PHP 插入带有外键的 SQL 表

mySQL查询ID为空的关联表

python - django get_or_create - 对象列表的性能优化

sql - 时间序列数据的自连接

php - 如何从mysql中的多个表中获取值?