2012-04-27 26 views
6

Tôi có hai bảng: account_company và document_invoice. Tài khoản bảng_company có 2 cột: company_id và company_name. Bảng document_invoice có cùng các cột: company_id và company_name. Đã xảy ra sự cố và xóa tất cả dữ liệu khỏi tên công ty cột khỏi document_invoice.Làm cách nào để sao chép dữ liệu giữa các bảng PostgreSQL

Làm cách nào để tôi có thể viết truy vấn SQL để sao chép dữ liệu từ bảng công ty tài khoản sang document_invoice? Tôi đã sử dụng UPDATE và SET nhưng tôi không biết chính xác như thế nào.

UPDATE document_invoice 
    SET company_name = (SELECT company_name FROM account_company) 
WHERE document_id.company_name=document_id.account 

enter image description here

+1

Hơi OT, hãy xem xét * không mang * tên công ty trong bảng tài liệu hóa đơn, trừ khi bạn nghĩ rằng tên công ty có thể thay đổi và bạn muốn để nắm bắt giá trị của tên công ty từ thời điểm xuất hóa đơn. (Thậm chí sau đó bạn có thể xem xét quản lý thời gian của vấn đề, nhưng có thể là trên đầu trang.) Lưu trữ dự phòng dữ liệu làm cho nó đắt hơn để cập nhật và giới thiệu một nguy cơ mà họ có thể rơi ra khỏi đồng bộ. Đây là những gì tham gia cho. Đừng tin FUD về việc tham gia đắt tiền. – kgrittn

+1

Tôi rất quan tâm đến kgrittn: Nếu bạn đã có company_id trong document_invoice, không cần phải giữ một bản sao của company_name trong bảng đó. –

Trả lời

8

này nên làm việc:

UPDATE document_invoice t1 
SET company_name = t2.company_name 
FROM account_company t2 
WHERE t1.company_id = t2.company_id 
+0

Chỉ có câu trả lời hợp lệ cho đến nay. –

Các vấn đề liên quan