私は試した:
UPDATE giveaways SET winner = '1' WHERE ID = (SELECT MAX(ID) FROM giveaways)
しかし、それは与えます:
#1093-
FROM
句で更新するターゲットテーブル 'giveaways'を指定できない
この記事 は関連性があるようですが、自分のクエリに適合させることができません。どうすれば機能しますか?
これは、更新が周期的である可能性があるためです...そのレコードを更新すると、何かが発生してWHERE
条件FALSE
になった場合はどうなりますか?あなたはそれが事実ではないことを知っていますが、エンジンはそうではありません。また、操作中にテーブルに反対のロックが存在する可能性があります。
私はあなたがこのようにそれを行うことができると思います(テストされていません):
UPDATE
giveaways
SET
winner = '1'
ORDER BY
id DESC
LIMIT 1
これにリンクした記事の情報に基づいて動作するはずです:
update giveaways set winner='1'
where Id = (select Id from (select max(Id) as id from giveaways) as t)
update giveaways set winner=1
where Id = (select*from (select max(Id)from giveaways)as t)
create table GIVEAWAYS_NEW as(select*from giveaways);
update giveaways set winner=1
where Id=(select max(Id)from GIVEAWAYS_NEW);
最初にサブクエリのビューを作成し、代わりにビューから選択して更新/削除できます。ビューを削除することを忘れないでください。
TEMP TABLEを使用します。
次のように:
UPDATE TABLE_NAME SET TABLE_NAME.IsActive=TRUE
WHERE TABLE_NAME.Id IN (
SELECT Id
FROM TEMPDATA
);
CREATE TEMPORARY TABLE TEMPDATA
SELECT MAX(TABLE_NAME.Id) as Id
FROM TABLE_NAME
GROUP BY TABLE_NAME.IncidentId;
SELECT * FROM TEMPDATA;
DROP TABLE TEMPDATA;