You can't specify target table 't1' for update in FROM clause
MySQL :: MySQL 5.6 リファレンスマニュアル :: 13.2.10.9 サブクエリーのエラー
サブクエリの FROM 節と更新対象の両方に同じテーブル(この場合、テーブル t1)を使用することはできません。
ヴァー
直近5分のレコードのうち最新レコードをひとつだけ更新する
最初に書いたクエリ:対象テーブルで最新分をサブクエリで求める方法
UPDATE log SET flag=1 WHERE no=(SELECT no FROM log WHERE time>DATE_SUB(NOW(),INTERVAL 5 MINUTE) AND flag=0 ORDER BY time DESC LIMIT 1);
次に書いたクエリ:サブクエリで書いた方を仮テーブルにする
CREATE TEMPORARY TABLE SELECT no FROM log WHERE time>DATE_SUB(NOW(),INTERVAL 5 MINUTE) AND flag=0 ORDER BY time DESC LIMIT 1; UPDATE log SET flag=1 WHERE no=(SELECT no FROM tmplog);
最終的なクエリ:UPDATEでもLIMITやORDERを使っていいので普通に
UPDATE log SET flag=1 WHERE time>DATE_SUB(NOW(),INTERVAL 5 MINUTE) AND flag=0 ORDER BY time DESC LIMIT 1;