2015-10-13 118 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