按值相同的其他记录中的值排除记录

时间:2019-05-07 13:10:13

标签: sql-server

我的桌子如下:

ID  type

12  1 
13  2
12  1
14  1
15  1
15  2
16  1
14  3

该ID可能会重复。 我需要获取所有类型为1的ID,但没有其他类型为<> 1的记录 因此结果将是:

12
16

什么是正确的方法?

1 个答案:

答案 0 :(得分:1)

聚集可能是最简单的方法:

SELECT ID
FROM yourTable
GROUP BY ID
HAVING MIN(type) = MAX(type) AND MIN(type) = 1;

我们也可以尝试使用自我加入方法:

SELECT DISTINCT t1.ID
FROM yourTable t1
LEFT JOIN yourTable t2
    ON t1.ID = t2.ID AND
       t2.type <> 1
WHERE
    t1.type = 1 AND
    t2.ID IS NULL;

Demo

该演示用于第二个自联接查询,但是您也可以将第一个查询插入相同的演示以进行尝试。