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

问题描述 投票:0回答:3

我不确定如何标题,但这是我想要做的。我有一个表,其中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)
mysql sql
3个回答
3
投票

获得结果的一种方法是使用NOT EXISTS。基本上它是什么它得到所有ID在内部查询中有90NOT 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
投票

您可以使用子查询:

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

0
投票

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

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

Demo on SQL Fiddle

© www.soinside.com 2019 - 2024. All rights reserved.