2012-04-27 51 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

相关问题