Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 从B列获取的值在a列中没有对应的值_Sql_Sql Server - Fatal编程技术网

Sql 从B列获取的值在a列中没有对应的值

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

我有一个MSSQL中有两列的表

id1
和列
id2
具有任何关系

示例数据:

id1   id2
12    13
13    14 
12    14 
13    15
此处,
id1
is中的12与
id2
中的13有关, 这里13 in
id1
is与14 in
id2
这样

如何编写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