MySQLのリファレンスマニュアルに不吉な事が書いてあったけど、うまくいったのでメモ
You cannot update a table and select from the same table in a subquery.
やりたいこと
住所テーブルに顧客毎の並び順を保証する列を追加したい。
列の初期値として、既存データを並び替えて連番を発行する。
やったこと
UPDATE addresses t1, (SELECT t3.id, SUM(t3.id >= t4.id) AS no FROM addresses t3 INNER JOIN addresses t4 ON t3.user_id = t4.user_id GROUP BY t3.id) t2 SET t1.no = t2.no WHERE t1.id = t2.id
Top comments (0)