Sql server SQL Server多对多查询

Sql server SQL Server多对多查询,sql-server,Sql Server,我有两个表,我们把它们称为table1和table2。它们都有一个名为ID1和ID2的列,这是两个表各自的主键 我还有另一个表,叫做table3,它包含ID1和ID2,在这两个表之间建立了多对多关系 我需要的是从表2中获取与表1中的记录不相关的所有记录 前 表1包含ID为1的记录 表2包含两条ID为1、2的记录 表3包含一条值为1-1的记录 我需要一个查询,将给我作为结果2 有人能给我一个继续的建议吗 谢谢 也可以使用左连接: SELECT t2.ID2 FROM table2 t2

我有两个表,我们把它们称为
table1
table2
。它们都有一个名为
ID1
ID2
的列,这是两个表各自的主键

我还有另一个表,叫做
table3
,它包含
ID1
ID2
,在这两个表之间建立了多对多关系

我需要的是从
表2中获取与
表1中的记录不相关的所有记录

  • 表1包含ID为1的记录
  • 表2包含两条ID为1、2的记录
  • 表3包含一条值为1-1的记录
我需要一个查询,将给我作为结果2

有人能给我一个继续的建议吗

谢谢

也可以使用左连接:

SELECT t2.ID2
    FROM table2 t2
        LEFT JOIN table3 t3
            ON t2.ID2 = t3.ID2
    WHERE t3.ID2 IS NULL;
也可以使用左连接:

SELECT t2.ID2
    FROM table2 t2
        LEFT JOIN table3 t3
            ON t2.ID2 = t3.ID2
    WHERE t3.ID2 IS NULL;

在SS 2005+中,第一个查询短路。@MaiOM:一般来说,不存在的版本应该更好。请参阅和。如果可以的话,我会再次+1,以参考Quassnoi的优秀文章。在SS 2005+中,第一个查询短路。@MaiOM:一般来说,不存在的版本应该更好。请参阅和。如果我可以参考Quassnoi的优秀文章,我会再次+1。关于这个主题已经有大约12000个问题了。关于这个主题已经有大约12000个问题了。