2012-12-28 51 views
8
  1. 列表項

表1:如何合併在PostgreSQL的兩個表

name| count 
xxx | 1 
yyyy | 2 
zzzz | 3 

表2:

name |count 
xxx | 1 
aaa | 5 

我需要的結果如表1所示: 表1:

name | count 
xxx | 1 
yyyy | 2 
zzzz | 3 
aaa | 5 

請給出你的想法

+0

不能在此與檢查的ID一個簡單的查詢來完成(名字是這種情況),並做了一個連接? –

回答

27

你應該使用UNION。

select * from table1 
union 
select * from table2 

要插入到表1:

INSERT INTO TABLE1 
select * from table2 
    where not exists(
      select * from table1 
       where name=TABLE2.Name 
         and count=TABLE2.Count 
        ) 
+0

喜unoin給出expexted結果,但我需要插入的任何新表2中 – user1897937

+0

我添加了一個查詢插入到表1 – valex

+0

@ user1897937歡迎堆棧溢出表1的值表1保持相同。如果這個答案爲你工作,請[標記爲接受(http://stackoverflow.com/faq#howtoask) – valex

0

你可以查看是否這是在你的開發人員合作,

MERGE INTO table1 x 
USING table2 b 
ON (x.name=b.name and x.count=b.count) 
WHEN NOT MATCHED THEN 
INSERT (x.name,x.count)VALUES(b.name,b.count); 
+0

我不認爲PostgreSQL支持合併到,也許在9.5版本? – Joril

5

我們並不需要任何特殊的MERGE/UPSERT命令。

  1. 將行從一個表合併到另一個表中。

    INSERT INTO table1 
        (SELECT * FROM table2 
        WHERE name NOT IN 
         (SELECT name FROM table1)); 
    
  2. 用於從舊錶格創建新表格。

    CREATE TABLE new_table AS 
    (SELECT * FROM table1 
    UNION 
    SELECT * FROM table2);