update accounts set password=(select password from accounts where name='joongsu')
where id=(select accountid from characters where name='Nobless')
它与错误消息“您无法在FROM子句中指定目标表'accounts'进行更新”不起作用
为什么不起作用?上面的选择查询仅返回1行。
最佳答案
也许您应该尝试this one:
UPDATE accounts
SET accounts.password =
(
SELECT something.password
FROM (SELECT * FROM accounts) AS something
WHERE something.name='joongsu'
)
WHERE accounts.id=(SELECT accountid FROM characters WHERE name='Nobless');
这是一个hack,但是我对其进行了测试,并且可以在我的测试数据上使用。由于某种原因,MySQL不允许在内部查询中使用与要更新的表相同的表。
关于mysql - 如何在UPDATE查询的同一张表中使用数据?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22729991/