0
我有一個需要複製行的表。該表是這樣的,它有一個主自動遞增鍵以及一個用於將行分組在一起的列。有沒有辦法讓複製一系列行的組ID設置爲從最後一個值增加?複製行和增量列
這是基本的例子,原始表數據
pri | grp
----------
1 | 1
2 | 9
3 | 2
4 | 1
5 | 2
6 | 9
7 | 2
我的目標是複製行1-7和有這樣的結果:
pri | grp
----------
1 | 1
2 | 9
3 | 2
4 | 1
5 | 2
6 | 9
7 | 2
- copied -
8 | 10
9 | 12
10 | 11
11 | 10
12 | 11
13 | 12
14 | 11
注意所複製的行GRP開始在最初的Max grp之後,然後每增加一個grp就會增加1。
SET @new = (SELECT MAX(grp)+1 FROM tbl), @prev = (SELECT MIN(grp) FROM tbl);
INSERT INTO tbl (grp) (
SELECT IF([email protected],
-- set @prev, use @new
, CASE
WHEN (@prev:=grp) IS NULL THEN NULL
ELSE @new
END
-- set @prev, update and use @new
, CASE
WHEN (@prev:=grp) IS NULL THEN NULL
ELSE @new:[email protected]+1
END)
FROM tbl
ORDER BY grp
)
這是給我下面的結果,它看起來像@prev變量沒有被正確地更新。
pri | grp
----------
1 | 1
2 | 9
3 | 2
4 | 1
5 | 2
6 | 9
7 | 2
- copied -
8 | 10
9 | 14
10 | 11
11 | 10
12 | 12
13 | 15
14 | 13
感謝@ P.Salmon,這似乎是工作! – Aaron