【MySQL】条件に当てはまるデータに対して、採番してからアップデートする

並び替え用のIDを採番したいことがありました。

そこで、

以下のサイトを参考にして、

dev-reco.com

gendosu.jp

条件に当てはまるデータに採番してからアップデートしました。

例:

SET @i := 0;
UPDATE 【テーブル名】 SET sort_id = (@i := @i +1) WHERE【条件の項目名】 = 【条件の項目値】ORDER BY field(id, 4,0,5,6,7,17)

これだと、SQL文が2つになり、PHPから更新できなかったので、

nodoame.net

blog.sus-happy.net

サブクエリで、変数を初期化する方法があった。

UPDATE 【テーブル名】 as t1,(SELECT *, ( @row:[email protected]+1 ) AS row FROM ( SELECT @row:=0 ) AS dummy, 【テーブル名】 WHERE 【条件の項目名】 = 【条件の項目値】 ORDER BY field(id,0,4,5,6,7,17)) as t2 SET t1.sort_id = t2.row WHERE t1.id = t2.id

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA