2017-02-07 34 views
0

如果我有兩個表如何在獲得完整外連接的同一列上進行選擇?

Table A 
user_id type 
123  tier1 
124  tier2 

Table B 
user_id sub_type 
123  sub_tier1 
125  sub_tier2 

我想full outer加入他們的行列,併成爲

user_id type sub_type 
123  tier1 sub_tier1 
124  tier2 null 
125  null sub_tier2 

我想是這樣

選擇COALESCE(A.user_id,B.user_id) as user_id,type,sub_type from A.user_id上的完整外連接B = B.user_id

,但它不工作,因爲它只能得到user_id子集,而不是隻從兩個表結合user_ids

更多細節: 我居然跑它與星火SQL,通過使用上面的查詢,它實際上有少得多的結果做比較,它數據幀

tablea.join(表B, 「USER_ID」, 「全」)

+0

您正在使用哪個數據庫系統?這是全外連接的正確結果。你的預期結果是什麼? – clemens

+1

^閱讀問題預期的結果是有 – Bsienn

+0

請指出數據庫併發布*完整查詢*你最有可能做外連接錯誤的第一個隨後對結果刪除NULL行的where操作 –

回答

0

我沒有看到任何的問題在這裏。請參考下面的代碼片段

WITH tablea (user_id, type) 
    AS (SELECT '123', 
       'tier1' 
     UNION 
     SELECT '124', 
       'tier2'), 
    tableb (user_id, sub_type) 
    AS (SELECT '123', 
       'sub_tier1' 
     UNION 
     SELECT '125', 
       'sub_tier2') 
SELECT COALESCE(a.user_id, b.user_id) AS user_id, 
     type, 
     sub_type 
FROM tablea a 
     FULL OUTER JOIN tableb b 
        ON a.user_id = b.user_id; 

USER_ID |TYPE |SUB_TYPE 
123  |tier1 |sub_tier1 
124  |tier2 |(null) 
125  |(null) |sub_tier2 
(Complete, 3 rows buffered in 0:00.9) 
相關問題