並び替え用のIDを採番したいことがありました。
そこで、
以下のサイトを参考にして、
条件に当てはまるデータに採番してからアップデートしました。
例:
SET @i := 0;
UPDATE 【テーブル名】 SET sort_id = (@i := @i +1) WHERE【条件の項目名】 = 【条件の項目値】ORDER BY field(id, 4,0,5,6,7,17)
これだと、SQL文が2つになり、PHPから更新できなかったので、
サブクエリで、変数を初期化する方法があった。
UPDATE 【テーブル名】 as t1,(SELECT *, ( @row:=@row+1 ) AS
row
FROM ( SELECT @row:=0 ) ASdummy
, 【テーブル名】 WHERE 【条件の項目名】 = 【条件の項目値】 ORDER BY field(id,0,4,5,6,7,17)) as t2 SET t1.sort_id = t2.row WHERE t1.id = t2.id