使用 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
);
我想更新 '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
);