我的数据大致如下:
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
所以每个后续行的起始编号是前一行的结束编号。当前行的结束编号是开始编号 + range-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
- 虽然我仍在寻找解决方案,但似乎无法找到解决方案。