おおよそ次のようなデータがあります。
user_id range start end
10 500 1 500
11 175
12 200
そしてそれを次のようなものに変換する必要があります:
user_id range start end
10 500 1 500
11 175 501 675
12 200 676 875
したがって、後続の各行の開始番号は前の行の終了番号になります。現在の行の終了番号は、開始番号+範囲-1です。
私はこれを純粋にSQLで行おうとしていましたが、エラーが発生するため、少し行き詰まっているようです。
UPDATE users U
SET start = ( SELECT end+1 FROM users U2 WHERE U2.id = U.id - 1 )
WHERE U.id > 1;
その結果、You can't specify target table 'users' for update in FROM clause
-そして私がまだ解決策を探している間、解決策を見つけることができないようです。