我正在尝试将数据表连接到另一个表,但我要加入的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
提前感谢您的任何帮助。
答案 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)