2015-11-13 53 views
1

任何人都可以幫助在1個sql語句中得到這個結果嗎?
我有2代表與具有主導地位第二表在所述第一 - 如下:SQL從2個支配表中選擇

表A

Code | Quantity 
    1   5 
    3   5 
    4   5 

表B

Code | Quantity 
    1   5 
    2   1 
    4   6 

查詢結果

Code | Quantity 
    1   5 - code exists in both - return record from TableB 
    2   1 - distinct only in TableB 
    3   5 - distinct only in TableA 
    4   6 - code exists in both - return record from TableB 

感謝您的幫助。謝謝!

回答

6

一個FULL JOIN會做:

SELECT COALESCE(t1.Code, t2.Code) AS Code, 
     COALESCE(t2.Quantity, t1.Quantity) AS Quantity 
FROM TableA AS t1 
FULL OUTER JOIN TableB AS t2 ON t1.code = t2.code 

COALESCE(t2.Quantity, t1.Quantity)基本實現你的「主導地位」的TableB要求在TableAQuantityTableA只有在情況下拿起有沒有匹配的記錄TableB

有關一個FULL JOIN是如何工作的,你可以去看看here的解釋:

FULL OUTER JOIN,包括所有的行,從兩個表中,無論 的其它表是否有匹配的值。

+0

非常感謝!如此簡單而簡單。 – Bobbit

+0

@Bobbit很高興幫助,並歡迎Stack Overflow。如果此答案或任何其他人解決了您的問題,請將其標記爲已接受。 –