2016-02-04 25 views
1

我有一個帶有公共ID字段的表A和B.我想在這些表上完成一個完整的外連接,根據ID來自哪個表,選擇ID和'表A'或'表B'。如何使用完全外連接顯示動態數據?

SELECT ID, ['tableA'|'tableB'] 
FROM A FULL OUTER JOIN B ON A.ID = B.ID 
WHERE A.ID IS NULL OR B.ID IS NULL 
+1

簡單的編程問題。請google以及瞭解tSQL中的CASE表達式。 –

+0

喜歡這個? SELECT CASE當ID IN(SELECT ID FROM A)then'tableA'WHEN(SELECT ID FROM B) – WedgeBuster53

+0

我在想更多的是什麼時候B.Id是NULL那麼'TableA'...'但是有多種方式'CASE '可以在這裏使用。 –

回答

1

試試這個:

SELECT COALESCE(A.ID , B.ID) AS ID , 
     CASE WHEN A.ID IS NOT NULL AND B.ID IS NULL THEN <tableA results> 
      WHEN A.ID IS NULL AND B.ID IS NOT NULL THEN <tableB results> 
     END AS results 
FROM A FULL OUTER JOIN B ON A.ID = B.ID 
WHERE A.ID IS NULL OR B.ID IS NULL 
+0

@TT。同意。但是看看where子句,看起來我們只有在A.ID爲NULL或B.ID爲NULL的情況下才會提取數據。 –

+0

絕對正確=)我的壞。具有嵌套選擇語句的 –

0

原來這就是我想出了從標籤的一點幫助後。

SELECT ID, SELECT CASE WHEN ID IN (SELECT ID FROM A) THEN 'tableA' 
         WHEN ID IN (SELECT ID FROM B) THEN 'tableB' 
FROM A FULL OUTER JOIN B ON A.ID = B.ID 
WHERE A.ID IS NULL OR B.ID IS NULL 
+0

效率非常低,因爲它們的功能類似於嵌套循環。 –

+0

感謝您的信息Kamran。我會嘗試你的解決方案。 – WedgeBuster53

+0

只需將替換爲要檢索的列或文本。 –