2012-04-27 52 views
6

我有兩個表:account_company和document_invoice。 表account_company有2列:company_id和company_name。 表document_invoice具有相同的列:company_id和company_name。 發生了某些情況並從document_invoice中刪除了列公司名稱中的所有數據。如何在表格間複製數據PostgreSQL

如何編寫SQL查詢以將帳戶公司表中的數據複製到document_invoice? 我一直在使用更新和設置,但我不知道如何。

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

略OT,考慮*沒有攜帶*文檔發票表中的公司名稱,除非你認爲這家公司的名稱可能會改變,你想從發票時間獲取公司名稱的價值。 (即使您可能會考慮對問題進行暫時管理,但這可能會超越問題的頂部。)冗餘的數據存儲使得更新更加昂貴,並且可能導致其不同步。這是聯結的目的。不要相信FUD關於聯接是昂貴的。 – kgrittn 2012-04-28 01:33:11

+1

我同意kgrittn:如​​果您已在document_invoice中擁有company_id,則不需要在該表中保留company_name的副本。 – 2012-05-02 14:53:14

回答

8

這應該工作:

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

迄今爲止唯一有效答案。 – 2012-04-27 15:56:02

相關問題