使用NULL加入ID

时间:2015-05-08 13:04:47

标签: sql sql-server select null sql-server-2012

我正在尝试将数据表连接到另一个表,但我要加入的ID之一是NULL。但是,我有一个特定的ID,我希望它与NULL链接。

我可能会用这个例子过分简化这个问题,但我希望这会指出我正确的方向。所以我们假设我们有两个表格。

TABLE1:

    Name    ID
    A       1
    B       2
    C       NULL

TABLE2:

    ID      Value
    1       4
    2       5
    3       6

在查询中我需要做什么来获得这样的输出?

输出:

    Name    Value
    A       4
    B       5
    C       6

提前感谢您的任何帮助。

6 个答案:

答案 0 :(得分:2)

您可以在on子句中明确检查它:

SELECT name, value
FROM   table1
JOIN   table2 ON (table1.id = table2.id) OR 
                 (table1.id IS NULL AND table2.id = 3)

答案 1 :(得分:2)

使用COALESCE(ID,3)而不是table1.id

加入

答案 2 :(得分:2)

如果您知道具体ID:使用ISNULL

SELECT name, value
FROM   table1
JOIN   table2 ON ISNULL(table1.id,3) = table2.id

答案 3 :(得分:1)

SELECT t1.Name AS Name , coalesce(t2.ID,standardvaluefornulls) AS ID
FROM table1 t1
LEFT JOIN table2 t2 ON t1.Value = t2.Value
编辑:这不适用于正常连接,因为它会跳过没有t2.value值的行,所以要记住你的左表(t1)是那个将永远有一个值''价值'你可以使用左连接,所以即使是table2中没有结果的连接也会得到标准的null值作为结果

SQLFIDDLE证明它有效:http://sqlfiddle.com/#!9/b2e15/12

答案 4 :(得分:0)

您可以加入多个条件,并在二级联接条件下加入您的特定场景:

select name, value
from table1 t1
inner join table2 t2 on t1.id = t2.id
    or (t1.id is null and t2.id = 3)

答案 5 :(得分:0)

SELECT name, value
FROM   table1
JOIN   table2 ON (table1.id = table2.id or table1.id IS NULL)