使用PostgreSQL中的另一个表的列更新表的列
我想将表table1的一列val1中的所有值复制到另一个表table2的一列val2。我在PostgreSQL中尝试过这个命令:
update table2 set val2 = (select val1 from table1) 但是我收到这个错误:
有办法吗?
您的
UPDATE 查询应该是这样的:
UPDATE table2 t2 SET val2 = t1.val1 FROM table1 t1 WHERE t2.table2_id = t1.table2_id AND t2.val2 IS DISTINCT FROM t1.val1 -- optional,to avoid empty updates 你拥有的方式,两个表的各行之间没有链接。 table2中的每行都会从table1中提取每一行。这没有任何意义(以昂贵的方式),并且也触发语法错误,因为此地方的子查询表达式仅允许返回单个值。 >我通过加入table2_id上的两个表来修复这个问题。用任何实际链接的两个替换。
>最后的WHERE子句阻止不会改变任何东西的更新 – 这实际上总是一个好主意(全部成本,但没有收益 – 异常异常适用)。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |