【发布时间】:2021-12-22 05:32:34
【问题描述】:
我想更新“location_costs”表下“animals”表基础成本下的“location_cost”列。主键是连接两个表的位置。我尝试了以下代码,但它给了我语法错误。
//UPDATE animals.*
SET animals.location_cost = location_costs.costs
FROM animals
LEFT JOIN location_costs
ON animals.location = location_costs.location;//
错误:“SET”处或附近的语法错误 SET animals.location_cost = location_costs.costs
我附上一张图片,这里给出了表格和列的想法:
我无法破译错误,如果有人可以帮助我处理此代码,我将不胜感激。
谢谢。
【问题讨论】:
-
update animals不是update anmials.*- 但是 Postgres 您不应该在 FROM 子句中重复目标表以及您执行此操作的方式,它会创建animals表与自身的交叉连接,因为目标表和 FROM 子句中的表之间没有“连接条件”。 -
我最初使用更新动物-这给了我错误:表名“动物”指定了不止一次(重复别名)。你是对的重复表创建错误,我该如何解决那?感谢您的回复。
-
动物表中是否有引用location_cost表的位置列的外键?动物表的主键是什么?
-
location_cost 表只有 2 列:位置和成本。动物表有以下列:animalid、size、color、birthdate、weight、location、location_cost(这个需要更新)
标签: sql postgresql join sql-update