我正在尝试使用以下命令根据选择查询更新表:
UPDATE branches SET name =
(SELECT CONCAT(comp.name," ",bra.subsurb) as newname
FROM companies comp
RIGHT JOIN branches bra
ON comp.id = bra.company_id)
Run Code Online (Sandbox Code Playgroud)
根据这个问题,这应该有效,但这会产生错误:You can't specify target table 'branches' for update in FROM clause
不确定我做错了什么。
编辑:
最终这个查询做了我想要的事情:
UPDATE branches bra LEFT JOIN companies comp
ON comp.id = bra.company_id
SET bra.name = CONCAT(comp.name," ",bra.subsurb)
错误本身是非常不言自明的,您正在从正在更新的表中进行选择。相反,您可以JOIN在更新语句中使用。尝试这个:
UPDATE branches b
LEFT JOIN companies c ON c.id = b.company_id
SET b.name = CONCAT(c.name, " ", b.subsurb);
Run Code Online (Sandbox Code Playgroud)
请注意,由于您在此处使用左连接来选择所有分支机构,无论它们是否有公司,您可能会得到某些名称的空值,因此请小心。
| 归档时间: |
|
| 查看次数: |
6510 次 |
| 最近记录: |