2

假设我有表 T,其中列 A、B、C、D、E、F
A 是自动增量主键
我有一些数据
我想复制 B=x 的所有数据
我想将数据复制到同一个表但同时将集合 A 复制为 null(以便它可以创建新的 ID)并将 B 更改为 y。
例子:

A,B,C,D,E,F  
1,1,9,8,3,9 
2,1,0,3,2,2 
3,1,7,1,1,8 
4,2,5,4,7,5 
5,2,6,5,8,4 
6,3,9,4,5,3 


 x = 2, y = 4  


结果:

A,B,C,D,E,F 
1,1,9,8,3,9  
2,1,0,3,2,2 
3,1,7,1,1,8 
4,2,5,4,7,5 
5,2,6,5,8,4 
6,3,9,4,5,3 
7,4,5,4,7,5  
8,4,6,5,8,4  

我找到了一种解决方案
Create table Temp as select * from T where B = x
Then
Update T set A = null, B = y
Then Insert into T select * from Temp
Then drop table temp

我没有测试,但它应该可以工作,但是有没有更简单的方法或者它可以写在一个查询中?

4

1 回答 1

2

我找到了解决方案,也许不是最好的但很好:

INSERT INTO T (A,B,C,D,E,F) SELECT null,y,C,D,E,F from T WHERE B = x
于 2013-09-26T10:45:25.767 回答