2010-11-24 25 views
0

假設我有兩張桌子。Postgresql:如何逐行連接表?

FIRST_TAB 
ID NAME 
=========== 
1 a 
2 b 

SECOND_TAB 
ID NAME 
=========== 
3 c 
4 d 

有什麼辦法使視圖/新表,這樣我可以做這樣的查詢? (我的真實數據大概有23個表格,沒有重複,所有的都有相同的列)。

SELECT * FROM NEWVIEW; 
ID NAME OPTIONAL 
================== 
1 a  FIRST_TAB 
2 b  FIRST_TAB 
3 c  SECOND_TAB 
4 d  SECOND_TAB 

回答

5

用途:

CREATE OR REPLACE VIEW newview AS 
    SELECT a.id, 
     a.name, 
     'FIRST_TAB' AS optional 
    FROM FIRST_TAB a 
    UNION ALL 
    SELECT b.id, 
     b.name, 
     'SECOND_TAB' AS optional 
    FROM FIRST_TAB b 

可選列是一個靜態的字符串,你可以指定你需要什麼,假設沒有特殊字符。

UNION ALL比使用UNION更快,因爲它不會刪除重複項。如果您需要刪除重複項,只需刪除「ALL」關鍵字(我相信optional列值將從重複項出現的聯合聲明中最早取得)。

參考:

+0

謝謝啊,我通過它脫脂,但不知錯過。通配符是否可用?我有很多專欄。 – 2010-11-24 14:37:33