Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.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 在多对多连接表中查找丢失的记录_Sql_Sql Server - Fatal编程技术网

Sql 在多对多连接表中查找丢失的记录

Sql 在多对多连接表中查找丢失的记录,sql,sql-server,Sql,Sql Server,我有一个连接两个表的多对多连接表: table1_id ----------- 1 2 3 表1 table1_id ----------- 1 2 3 表2 table1_id ----------- 1 2 3 table2_id ------------ A B C 联接表 table1_id ----------- 1 2 3 table1_id | table2_id ------------|-------------- 1 | A 1

我有一个连接两个表的多对多连接表:

table1_id 
-----------
1
2
3
表1

table1_id 
-----------
1
2
3
表2

table1_id 
-----------
1
2
3
table2_id
------------
A
B
C
联接表

table1_id 
-----------
1
2
3
table1_id   |   table2_id
------------|--------------
1           |  A
1           |  B
1           |  C
2           |  A
2           |  C
3           |  B
如何编写一个查询来找出联接表中缺少哪些记录,因为我希望所有的组合都被考虑在内。基本上,我需要一个返回这些丢失记录的查询:

table1_id 
-----------
1
2
3
table1_id   |   table2_id
---------------------------
2           |  B
3           |  A
3           |  C

我觉得这应该很简单,但我还没有弄明白。

做一个
交叉连接来获得所有可能的组合。然后使用
EXCEPT
删除现有组合

table1_id 
-----------
1
2
3
select t1.table1_id, t2.table2_id
from t1 cross join t2
except
select table1_id, table2_id from join_table

全部的这可能是用于多个联合ALL的错误吗?No
ALL
根据(而不是文档错误—“不支持EXCEPT运算符的“ALL”版本。“如果尝试使用它,则会出错)@GeorgeMenoutis,可能是一个老习惯。。。我想这不重要,因为没有重复的行;正如达米恩所说,这是行不通的。(不知道SQL Server不支持除所有…)