1
UPDATE reservation SET flag = "1" WHERE ipAddress = (SELECT ipAddress FROM reservation WHERE endDate < CURRENT_TIMESTAMP);

日付が期限切れになった予約テーブルのエントリのフラグ列を変更するために、このクエリを使用しようとしています。フラグ列はデフォルトで0です。そのため、識別のために期限切れを1に変更しようとしています。

次のエラーが表示されます。

ERROR 1093 (HY000): You can't specify target table 'reservation' for updatein FROM clause

誰かがこの問題の解決策を提案できますか..

4

2 に答える 2

3

副選択で同じテーブルを使用している場合は、おそらく副選択を完全に省略できます。代わりに次を使用しないでください

UPDATE reservation 
SET flag = "1" 
WHERE endDate < CURRENT_TIMESTAMP
于 2012-08-16T10:07:05.787 に答える
3

インナーは必要ありませんSELECTflagに基づいてステータスを更新するだけです。endDate

UPDATE reservation 
SET flag = "1" 
WHERE endDate < CURRENT_TIMESTAMP
于 2012-08-16T10:07:16.837 に答える