使用 SQL 中另一个 table 的左连接更新 table 中的列

Updating column in table using left join from another table in SQL

我想更新 'animals' table 下 'location_costs' table 下的基础成本列 'location_cost'。主键是连接两个 table 的位置。我试过下面的代码,但它给我语法错误。

//UPDATE animals.* 
SET animals.location_cost = location_costs.costs
FROM animals       
LEFT JOIN location_costs
ON animals.location = location_costs.location;//

Error: syntax error at or near "SET" SET animals.location_cost = location_costs.costs

我附上一张图片,它给出了此处 table 和列的想法:

Tables View

我无法破译错误,如果有人能帮助我解决此代码,我将不胜感激。

谢谢。

如果 animalid 是具有唯一值的列,请尝试使用如下别名:

Update animals
Set location_cost = location_costs.costs
From animals As a Left Join location_costs On (a.location = location_costs.location)
Where animals.animalid = a.animalid;

如果您只想更新 animals 中与 location_costs 中匹配的 location 的行,请使用以下语法:

UPDATE animals
SET location_cost = location_costs.costs
FROM location_costs
WHERE location_costs.location = animals.location;

如果要更新 animals 的所有行(即使 location_costs 中没有匹配 location 的行也会更新为 null),然后使用相关子查询:

UPDATE animals
SET location_cost = (
  SELECT location_costs.costs 
  FROM location_costs 
  WHERE location_costs.location = animals.location
);