2012-12-28 66 views
8
  1. List item

bảng 1:làm thế nào để hợp nhất hai bảng trong postgresql

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

bảng 2:

name |count 
xxx | 1 
aaa | 5 

tôi cần kết quả trong bảng 1 như: bảng 1:

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

vui lòng cung cấp ý tưởng của bạn

+0

Không thể này được thực hiện với một truy vấn đơn giản để kiểm tra cho ID (tên là trường hợp này) và không một tham gia? –

Trả lời

27

Bạn nên sử dụng UNION.

select * from table1 
union 
select * from table2 

Để chèn vào bảng 1:

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

hi unoin cho kết quả expexted nhưng bảng 1 vẫn giống nhau tôi cần phải chèn các giá trị trong table1 bất cứ điều gì mới trong table2 – user1897937

+0

Tôi đã thêm một truy vấn để chèn vào table1 – valex

+0

@ user1897937 Chào mừng bạn đến Stack Overflow. Nếu câu trả lời này phù hợp với bạn, vui lòng [đánh dấu nó là được chấp nhận] (http://stackoverflow.com/faq#howtoask) – valex

0

Bạn có thể kiểm tra xem này đang làm việc trong nhà phát triển của bạn,

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

Tôi không nghĩ PostgreSQL hỗ trợ MERGE INTO, có thể trong phiên bản 9.5? – Joril

5

Chúng ta không cần bất kỳ MERGE/UPSERT lệnh đặc biệt.

  1. Để hợp nhất các hàng từ bảng này sang bảng khác.

    INSERT INTO table1 
        (SELECT * FROM table2 
        WHERE name NOT IN 
         (SELECT name FROM table1)); 
    
  2. Để tạo bảng mới từ bảng cũ.

    CREATE TABLE new_table AS 
    (SELECT * FROM table1 
    UNION 
    SELECT * FROM table2); 
    
Các vấn đề liên quan