Sql 从B列获取的值在a列中没有对应的值
我有一个MSSQL中有两列的表 列Sql 从B列获取的值在a列中没有对应的值,sql,sql-server,Sql,Sql Server,我有一个MSSQL中有两列的表 列id1和列id2具有任何关系 示例数据: id1 id2 12 13 13 14 12 14 13 15 此处,id1is中的12与id2中的13有关, 这里13 inid1is与14 inid2 这样 如何编写SQL查询,以便在传递12时,从id2列中获取与12没有任何关系的值 (在这种情况下,答案是15)我认为这很简单: select distinct id2 from table where id2 not in (s
id1
和列id2
具有任何关系
示例数据:
id1 id2
12 13
13 14
12 14
13 15
此处,id1
is中的12与id2
中的13有关,
这里13 inid1
is与14 inid2
这样
如何编写SQL查询,以便在传递12
时,从id2
列中获取与12
没有任何关系的值
(在这种情况下,答案是15)我认为这很简单:
select distinct id2
from table
where id2 not in (select id2 from table where id1 = 12)
也就是说,您希望查找所有
id2
值,以便具有该id2
值的行的id1
值均为12您可以在where子句中使用子查询
SELECT id2 FROM `test1`
WHERE id2 NOT IN (SELECT id2 FROM `test1` WHERE id1 = 12)
如果在id2中输入任何空值,则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)
或
仅供参考,这不是SQL Server Syntax你需要递归工作的东西,对吗?@niktrs-如果OP想要递归,那么我看不出15是一个答案(因为(12,13)和(13,15)在集合中)
SELECT id2
FROM MyTable
EXCEPT
SELECT id2
FROM MyTable
WHERE id1 = 12