Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PostgreSQL表之间复制数据_Sql_Postgresql_Set_Sql Update - Fatal编程技术网

如何在PostgreSQL表之间复制数据

如何在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

我有两张表:账户、公司和单据、发票。 表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 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,那么就没有必要在该表中保留公司名称的副本。