SQL Server多对多查询

时间:2011-11-21 16:49:47

标签: sql-server

我有两张桌子,我们称之为table1table2。它们都有一个名为ID1ID2的列,它们分别是两个表中的PK。

我还有一个名为table3的表,其中包含ID1ID2,在这两个表之间建立了多对多关系。

我需要的是从table2获取与table1中的记录无关的所有记录。

实施例。

  • 表1包含ID = 1
  • 的记录
  • 表2包含两个ID为1,2的记录
  • 表3包含一个值为1 - 1
  • 的记录

我需要一个可以作为结果2的查询。

有人可以建议我继续进行吗?

由于

1 个答案:

答案 0 :(得分:6)

SELECT t2.ID2
    FROM table2 t2
    WHERE NOT EXISTS(SELECT NULL
                         FROM table3 t3
                         WHERE t3.ID2 = t2.ID2);

你也可以使用LEFT JOIN:

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