どもです。毎度の備忘的記事。
WHERE指定した条件でUPDATEを行いたいけれど、更新対象はその条件の最新1レコードのみにしたい。
という場合、連番のIDや更新日時など、どのレコードが最新なのか判断基準になるカラムがあれば、簡単に可能という話。
UPDATE [対象テーブル] SET [更新内容] WHERE [条件] ORDER BY [基準となるカラム] DESC LIMIT 1
つまり、UPDATE には ORDER BY や LIMIT の指定が有効だという話です。
もちろん、応用すれば「最新10件のみ更新」とか「最古の1件を更新」とか、いくらでもできます。
サブクエリとかそういうややこしいもんは一切要らないのだ!
※なお、対象テーブルをJOINすると Incorrect usage of UPDATE and エラーとなってしまう模様。