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)