MySQL#1093 - 您无法在FROM子句中为更新指定目标表'giveaways'

Era*_*ray 26 mysql sql select subquery mysql-error-1093

我试过了:

UPDATE giveaways SET winner = '1' WHERE ID = (SELECT MAX(ID) FROM giveaways)
Run Code Online (Sandbox Code Playgroud)

但它给出了:

#1093 - 您无法为update in FROM子句指定目标表'giveaways'

这篇文章看似相关,但我无法将其改编为我的查询.我怎样才能让它发挥作用?

ipr*_*101 38

基于您链接的文章中的信息应该有效:

update giveaways set winner='1'
where Id = (select Id from (select max(Id) as id from giveaways) as t)
Run Code Online (Sandbox Code Playgroud)

  • @Eray.我不认为我的查询可能比ipr101慢,因为即使我使用*,查询也只检索一个标量值.所以我没有得到任何不必要的价值.顺便说一句,我提出了马修的答案,因为这是一个更聪明的解决方案,我不明白为什么有人对它进行了贬低. (2认同)

Mat*_*hew 28

这是因为您的更新可能是周期性的......如果更新该记录将导致事情发生这使得哪些WHERE条件FALSE?你知道情况并非如此,但引擎却没有.操作中桌面上也可能存在相反的锁定.

我认为你可以这样做(未经测试):

UPDATE
    giveaways
SET
    winner = '1'
ORDER BY
    id DESC
LIMIT 1
Run Code Online (Sandbox Code Playgroud)

阅读更多

  • 它经过测试和批准.它耗时0.0002秒. (2认同)

Nic*_*ssu 13

update giveaways set winner=1 
where Id = (select*from (select max(Id)from giveaways)as t)
Run Code Online (Sandbox Code Playgroud)