我在SQL Server 2008中工作。我有2个非常简单的表。让我们调用第一个Table_A,它有Col_1和Col_2列,让我们调用第二个Table_B,它有Col_a和Col_b列。 Col_1和Col_a是两个表之间的关键。所以,让我们说我想做一个简单的连接,比如
SELECT
Table_A.Col_1,
Table_A.Col_2,
Table_B.Col_b
FROM Table_A
LEFT JOIN Table_B
ON Table_A.Col_1 = Table_B.Col_a
WHERE Table_A.Col_2 <> Table_B.Col_b
我遇到的问题是Table_B可能为空,这意味着此查询不会返回任何记录。在那种情况下,我希望查询只返回Table_A中的所有记录。解决这个问题的最佳方法是什么?
以下是一些示例数据: -
Table_A:-
Col_1 Col_2
-----------
x 1
y 3
Table_B:-
Col_a Col_b
-----------
x 1
y 4
答案 0 :(得分:0)
如果我此时正确解释了问题/注释,您需要一个WHERE子句,它将结果过滤到Table_B.Col_b为NULL或与Table_A.Col_1不匹配的记录。相当于WHERE Table_A.Col_1&lt;&gt; Table_B.Col_b或Table_B.Col_b IS NULL。
SELECT Col_1,
Col_2,
Col_b
FROM Table_A
LEFT JOIN
Table_B ON Col_1 = Col_a
WHERE Col_1 <> ISNULL(Col_b,-Col_1) --I use -Col_1 since i don't know a literal values that will always be different.