从列B获取在A列中没有相应值的值

时间:2011-07-12 06:36:06

标签: sql sql-server

我在MSSQL中有一个包含两列的表。

id1和列id2有任何关系。

示例数据:

id1   id2
12    13
13    14 
12    14 
13    15

id1中的12与id2中的13有关系, 这里id1中的13与id2中的14有关系 这样...... ..

如何编写SQL查询,以便在我通过12时获取与id2没有任何关系的12列中的值?

(在这种情况下,答案是15)

3 个答案:

答案 0 :(得分:1)

您可以在where子句中使用子查询。

SELECT id2 FROM `test1`  
WHERE id2 NOT IN (SELECT id2 FROM `test1` WHERE id1 = 12)

答案 1 :(得分:1)

如果id2中有任何NULL,则NOT IN将始终失败

您必须使用EXISTS或EXCEPT来保持一致性和正确的结果

SELECT tr.id2
FROM MyTable tr
WHERE NOT EXISTS (SELECT * FROM MyTable tl
    WHERE tl.id1 = 12 AND tl.id2 = tr.id2)

或者

SELECT id2
FROM MyTable
EXCEPT
SELECT id2
FROM MyTable
WHERE id1 = 12

答案 2 :(得分:0)

我认为这很简单:

select distinct id2 
from table 
where id2 not in (select id2 from table where id1 = 12)

即。您想要查找所有id2值,以使id2值不包含id1的行