2015-05-08 35 views
2

我試圖將一個數據表連接到另一個表,但是我將要加入的一個ID是NULL。但是,我有一個特定的ID,我希望它鏈接到NULL。加入一個ID爲NULL

在這個例子中,我可能會過分簡化這個問題,但我希望這會讓我指向正確的方向。假設我們有下面兩張表。

表1:

Name ID 
    A  1 
    B  2 
    C  NULL 

TABLE2:

ID  Value 
    1  4 
    2  5 
    3  6 

我需要在查詢中得到這樣的輸出呢?

OUTPUT:

Name Value 
    A  4 
    B  5 
    C  6 

感謝您的任何援助。

+1

如何來C是6? –

+0

在連接條件中使用ISNULL條件,如ON ISNULL(t1.ID,specific id)= t2.ID – knkarthick24

回答

2

你可以明確地檢查它的on子句中:

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

這可以很好地工作。謝謝! – kaiguy

2

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

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) 
0
SELECT name, value 
FROM table1 
JOIN table2 ON (table1.id = table2.id or table1.id IS NULL) 
+0

這可能會回答這個問題,但如果你可以添加一些解釋,它會更好。謝謝。 –

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)是一個將始終有一個對於「值」,您可以使用左連接所以即使是那些沒有在表2的結果將得到標準的空值作爲結果

SQLFIDDLE證明它價值的作品:http://sqlfiddle.com/#!9/b2e15/12

2

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

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