0
私は行をコピーする必要があるテーブルがあります。テーブルには、プライマリの自動インクリメントキーと、行をグループ化するための列があります。グループIDが最後の値から増分するように設定された一連の行をコピーする方法はありますか?コピーされた行のGRPが始まること行と増分列をコピー
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
は注意:ここで
は、基本的な例元のテーブルのデータは、私の目標は、行1-7をコピーして、このような結果を持つことである
pri | grp
----------
1 | 1
2 | 9
3 | 2
4 | 1
5 | 2
6 | 9
7 | 2
です元の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
感謝を注文する必要があると思う、それが動作しているようです! – Aaron