我有两张桌子:
ID VALUE
----------
1 7
2 5
3 44
4 982
5 1
6 0
7 671
ID VALUE
---------------
1 6
2 6
3 77
4 22
如何将数据从#B复制到#A以获取不同的ID(比#A中的MAX大一个)?例如,我需要得到
ID VALUE
1 7
2 5
3 44
4 982
5 1
6 0
7 671
8 6
9 6
10 77
11 22
答案 0 :(得分:1)
将其设为IDENTITY
列自动递增,或者:
INSERT INTO A
SELECT b.ID + (SELECT MAX(ID) FROM A) AS ID, b.Value
FROM B
如果表B中的ID有间隙,则选择略有不同。然后转移这些差距。
答案 1 :(得分:0)
如果ID
中的TableA
列尚未设置为自动递增,请执行以下命令:
ALTER TABLE TableA MODIFY COLUMN ID INT auto_increment
现在,您只需将TableB
中的所有记录插入TableA
:
INSERT INTO TableA (VALUE)
SELECT VALUE
FROM TableB
依靠查询中的业务逻辑来维护ID
列的顺序并不是一个好主意。相反,让SQL为您处理它;它是为此目的而设计的。