26

私は試した:

UPDATE giveaways SET winner = '1' WHERE ID = (SELECT MAX(ID) FROM giveaways)

しかし、それは与えます:

FROM#1093 -句の更新にターゲット テーブル 'giveaways' を指定できません

この記事は関連しているようですが、クエリに適合させることはできません。どうすれば動作させることができますか?

4

6 に答える 6

38

リンクした記事の情報に基づいて、これは機能するはずです:

update giveaways set winner='1'
where Id = (select Id from (select max(Id) as id from giveaways) as t)
于 2011-11-30T21:52:20.457 に答える
29

WHEREこれは、更新が周期的である可能性があるためです...そのレコードを更新すると、条件が発生する何かが発生した場合はどうなりますFALSEか? そうではないことはわかっていますが、エンジンはそうではありません。操作中のテーブルに反対のロックが存在する可能性もあります。

私はあなたがこのようにすることができると思います(テストされていません):

UPDATE
    giveaways
SET
    winner = '1'
ORDER BY
    id DESC
LIMIT 1

続きを読む

于 2011-11-30T21:53:02.360 に答える
13
update giveaways set winner=1 
where Id = (select*from (select max(Id)from giveaways)as t)
于 2011-11-30T21:50:22.423 に答える