2014-09-04 87 views
1

說我有兩個表具有以下數據:訂購的蜂巢UNION ALL

A1 
| c1 | c2 | 
| a | b | 

A2 
| c1 | c2 | 
| c | d | 

我想運行一個選擇返回兩個表的數據,與上述A2數據A1數據:

A1 U A2 
| c1 | c2 | 
| a | b | 
| c | d | 

所以在蜂巢我可以這樣做:

SELECT * FROM A1 
UNION ALL 
SELECT * FROM A2 

但是,這並不產生正確的結果。我如何執行聯盟所有的命令呢?或者會產​​生這種輸出的另一種解決方案?

回答

2

它會混淆你的工作流,在你的配置單元輸出中增加一列嗎?如果沒有,你可以使用:

select sort_char, c1, c2 from (
    select '1' as sort_char, c1, c2 from A1 
    union 
    select '2' as sort_char, c1, c2 from A2 
) A3 sort by sort_char 
+0

我想這是最好的選擇,謝謝! – 2014-12-08 18:54:50

1

嘿傑森您的解決方案爲我的查詢以及..我試圖做同樣的事情。這裏我已經加入UNION ALL在查詢..它爲我工作..感謝您在桌子上增加一列的想法。

選擇sort_char,c1,c2 from(select'1'as sort_char,c1,c2 from tbl1 union all select'2'as sort_char,c1,c2 from tbl2)a;

沒有增加一個新的領域,下面的查詢也爲我工作..

選擇C1,從(選擇C1,從TBL1聯盟的所有選擇C1,從tbl2的C2 C2)TBL3 C2;

0

沒有它的順序給出任意的結果,它並不保證每次都有相同的結果。我建議通過sort_char子句附加順序,以便每次都能獲得相同的結果。

查詢: 選擇sort_char,C1,從(選擇 '1' 作爲sort_char,C1,C2從TBL1 UNION ALL選擇 '2' 作爲sort_char,C1,C2從TBL2)由sort_char一個順序C2;