2013-01-11 86 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