我在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)
答案 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
的行