2013-01-11 84 views
1

的我有一個蜂巢數據庫下表:在合併列連接兩個表

table1: 
id t  X 
1 1  a 
1 4  a 
2 5  a 
3 10 a 

table2: 
id t Y 
1 3 b 
2 6 b 
2 8 b 
3 15 b 

,我想將它們合併到有一個表,如:

id t Z 
1 1 a 
1 3 b 
1 4 a 
2 5 a 
2 6 b 
2 8 b 
3 10 a 
3 15 b 

基本上什麼我想要做的是:

  1. 在列id聯接(這部分很簡單)

  2. 合併列table1.ttable2.t放入一個新列t

  3. 具有可變Z等於table1.X如果對應t來自table1.t,和table2.Y如果它來自table2.t

  4. 通過id然後通過t(這不應該太難)訂購表格

我不知道如何做第2和第3部分。我嘗試使用 table1.id = table2.id and table1.t = table2.t的外連接,但它不合並兩列t

任何指針,將不勝感激。謝謝!

回答

1
CREATE TABLE table3 as SELECT * FROM (SELECT id,t,X as Z FROM t3_1 UNION ALL SELECT id,t,Y as Z FROM t3_2) u1 order by id,t; 

儘管並不總是需要,但使用聯合查詢的子查詢有助於組織,此外,您還可以在查詢的其他部分引用聯合中的字段(例如u1.id)。

您需要第3列的別名才能使模式匹配。如果源表名不是列,你可以這樣做:

select * from (select id,t,'a' from t3_1 UNION ALL select id,t,'b' from t3_2) u1; 
+0

工作正常,非常感謝! – S4M

1

試試這個。這將在表3插入,則所有值從其他2個表

INSERT INTO表3(T,Z) SELECT噸,X FROM表1 UNION ALL SELECT噸,Y FROM table2中

+0

謝謝你,但我沒有表table3呢。所以我想創建table3和命令:create table table3 as select t,X from table1 UNION ALL從table2中選擇t,Y; (不匹配輸入'UNION') – S4M