2015-10-13 66 views
1

我有2个表,都有一个TIMESTAMP列合并2个表到一个查询上不平等列

我想显示两个表中的所有行合并在一起,由该TIMESTAMP列进行排序。

两个表中的任何行都不可能有完全相同的TIMESTAMP值。

我该怎么做?

为简单起见,例如:

  • TABLEA - COLUMNS ID,时间戳,COLXYZ,COLZZZ
  • TABLEB - COLUMNS ID,时间戳,COLABC,COLDEF,COLGHI

想:

RESULT - COLUMNS ID,TIMESTAMP,COLXYZ,COLZZZ,COLABC,COLDEF,COLGHI

由TIMESTAMP上升

排序如果有做它没有指定其他列的一些通配符的方式,这将是更好的(我的意思是通配符抓住从表中的所有列)

+1

您正在使用哪些DBMS? Postgres的?甲骨文? –

+0

服务器模式下的H2 – ycomp

回答

1

一个简单的工会都应该足够了。只需用空值填充每个表上缺少的列。

SELECT ID, TIMESTAMP, COLXYZ, COLZZZ, NULL AS COLABC, NULL AS COLDEF, NULL AS COLGHI 
FROM TABLEA 
UNION ALL 
SELECT ID, TIMESTAMP, NULL, NULL, COLABC, COLDEF, COLGHI 
FROM TABLEB 
ORDER BY TIMESTAMP; 

我真的没有看到一种方法可以避免必须拼出每个表的列名。

+0

您确定orderby正在申请两个表? –

+1

是的,在进行联合之前应用顺序是没有意义的。 – wvdz

+0

谢谢 - 会有点打字,表格中的列数比示例中多,但我会按照您的建议 – ycomp