没有返回带有多个条目的id的mysql查询

时间:2018-02-28 16:41:57

标签: mysql sql

我不确定如何标题,但这就是我想要做的。我有一个表,其中id可以有多个条目

id | number
___________
1  | 90
1  | 88
2  | 88
3  | 88

我想要一个返回所有不包含数字90的id的查询,因此在这个例子中只有2和3。我已经尝试了下面的内容,但它仍然返回1的id,因为它也有88个。

SELECT DISTINCT id FROM table WHERE number NOT IN (90)

3 个答案:

答案 0 :(得分:3)

获得结果的一种方法是使用NOT EXISTS。基本上它的作用是它在内部查询中得到ID所有90,而NOT EXISTS只显示内部查询中没有的所有ID

SELECT  A.*
FROM    TableName a
WHERE   NOT EXISTS (SELECT NULL
                    FROM TableName B
                    WHERE a.ID = b.ID
                            AND b.number = 90)

这里是Demo

另一种方法是使用LEFT JOIN产生与上面相同的结果。

SELECT  a.*
FROM    TableName a
        LEFT JOIN TableName b
            ON a.ID = b.ID
                AND b.number = 90
WHERE   b.id IS NULL

这里是Demo

答案 1 :(得分:1)

您可以使用子查询:

SELECT id 
FROM table 
WHERE id NOT IN (SELECT id FROM table WHERE number = 90)

答案 2 :(得分:0)

您可以使用如下所示的聚合来获得更好的性能:

SELECT ID
FROM YourTable 
GROUP BY ID
HAVING NOT INSTR(GROUP_CONCAT(`number`),'90');

Demo on SQL Fiddle

相关问题