如何在PostgreSQL表之间复制数据
我有两张表:账户、公司和单据、发票。 表account\u company有两列:company\u id和company\u name。 表document\u invoice具有相同的列:company\u id和company\u name。 发生了一些问题,请从文档\u发票的“公司名称”列中删除所有数据 如何编写SQL查询以将数据从科目公司表复制到凭证发票? 我一直在使用UPDATE和SET,但我不知道具体如何使用如何在PostgreSQL表之间复制数据,sql,postgresql,set,sql-update,Sql,Postgresql,Set,Sql Update,我有两张表:账户、公司和单据、发票。 表account\u company有两列:company\u id和company\u name。 表document\u invoice具有相同的列:company\u id和company\u name。 发生了一些问题,请从文档\u发票的“公司名称”列中删除所有数据 如何编写SQL查询以将数据从科目公司表复制到凭证发票? 我一直在使用UPDATE和SET,但我不知道具体如何使用 UPDATE document_invoice SET compa
UPDATE document_invoice
SET company_name = (SELECT company_name FROM account_company)
WHERE document_id.company_name=document_id.account
这应该可以:
UPDATE document_invoice t1
SET company_name = t2.company_name
FROM account_company t2
WHERE t1.company_id = t2.company_id
略微不考虑,不要在文件发票表中携带公司名称,除非您认为公司名称可能改变,并且您希望从发票的时间捕获公司名称的价值。(即便如此,您可能会考虑对该问题的时间管理,但这可能是最重要的。)冗余的数据存储使得更新成本更高,并且引入了可能会失去同步的风险。这就是连接的用途。不要相信FUD关于连接昂贵的说法。我对kgrittn表示不满:如果您在文件发票中已经有公司id,那么就没有必要在该表中保留公司名称的副本。