连接多个表来过滤1个表

时间:2014-04-16 17:32:11

标签: sql-server

我在SQL Server 2008中工作。我有几个表,每个表都有一个共用键。假设我想从其中一个表开始,并将其过滤到任何其他表中不存在的记录。这样做的最佳方式是什么?

一般来说,我知道我想为2个表做以下的事情:

SELECT
A.col_1
FROM Table_A A
LEFT JOIN Table_B B
ON A.col_1 = B.col_x
WHERE B.col_x IS NULL

我是否只是在每个WHERE子句后继续使用JOIN?

对于案例3表,我希望做到以下几点,但我知道它不起作用:

SELECT
A.col_1
FROM Table_A A
LEFT JOIN Table_B B
ON A.col_1 = B.col_x
WHERE B.col_x IS NULL
LEFT JOIN Table_C C
ON A.col_1 = C.col_i
WHERE C.col_i IS NULL

上述查询有什么问题?

1 个答案:

答案 0 :(得分:0)

我正在解答您的问题并将其发布在此处以帮助未来的访问者。

SELECT
  A.col_1
FROM Table_A A
LEFT JOIN Table_B B
ON A.col_1 = B.col_x
LEFT JOIN Table_C C
ON A.col_1 = C.col_i
WHERE 
(
  B.col_x IS NULL
  AND
  C.col_i IS NULL
)