gpt4 book ai didi

SQL Server JOIN 缺少 NULL 值

转载 作者:行者123 更新时间:2023-12-01 17:44:34 25 4
gpt4 key购买 nike

假设我有以下 2 个表:

      Table1:                                Table2:
Col1: Col2: Col3: Col1: Col2: Col4:
a b c a b d
e <null> f e <null> g
h i j h i k
l <null> m l <null> n
o <null> p o <null> q

现在,我想在 Col1Col2 上连接这些表,并将整个集合恢复为如下所示:

     Result:
Col1: Col2: Col3: Col4:
a b c d
e <null> f g
h i j k
l <null> m n
o <null> p q

所以,我尝试了如下 SQL:

SELECT Table1.Col1, Table1.Col2, Table1.Col3, Table2.Col4
FROM Table1
INNER JOIN Table2
ON Table1.Col1 = Table2.Col1
AND Table1.Col2 = Table2.Col2

但它与 Col2 中的 NULL 值不匹配,所以我最终得到:

     Result:
Col1: Col2: Col3: Col4:
a b c d
h i j k

如何才能得到我想要的结果?

谢谢!

最佳答案

您可以明确说明连接:

SELECT Table1.Col1, Table1.Col2, Table1.Col3, Table2.Col4
FROM Table1 INNER JOIN
Table2
ON (Table1.Col1 = Table2.Col1 or Table1.Col1 is NULL and Table2.Col1 is NULL) AND
(Table1.Col2 = Table2.Col2 or Table1.Col2 is NULL and Table2.Col2 is NULL)

实际上,我更有可能在连接条件中使用coalesce():

SELECT Table1.Col1, Table1.Col2, Table1.Col3, Table2.Col4
FROM Table1 INNER JOIN
Table2
ON (coalesce(Table1.Col1, '') = coalesce(Table2.Col1, '')) AND
(coalesce(Table1.Col2, '') = coalesce(Table2.Col2, ''))

其中 '' 是两个表中都不存在的值。

请注意一点。在大多数数据库中,使用任何这些构造都会阻止使用索引。

关于SQL Server JOIN 缺少 NULL 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14366004/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com