日期:2014-05-17  浏览次数:20506 次

如何复制同一表内的数据
表1
id, name, subject, mark, address
1, aa, english, 99, 231
2, aa, math, 88, 211
3, bb, english, 88, 231
4, cc, english, 77, 321

id为主键

我想问2种复制, 1种是单个复制, 比如复制id1,
是不是

Insert into 表1 select * from 表1 Where id='1' , 

然后结果为

表1
id, name, subject, mark, address
1, aa, english, 99, 231
2, aa, math, 88, 211
3, bb, english, 88, 231
4, cc, english, 77, 321
5, aa, english, 99, 231

另外一个是多个复制

Insert into 表1 select * from 表1 Where name='aa' , 

结果为

id, name, subject, mark, address
1, aa, english, 99, 231
2, aa, math, 88, 211
3, bb, english, 88, 231
4, cc, english, 77, 321
5, aa, english, 99, 231
6, aa, math, 88, 211


谢谢

------解决方案--------------------
id 如果是自增列的话,查询的时候就不要把ID给列再来 select name, subject, mark, address 就可以了.
------解决方案--------------------
由于你的id为自增。所以insert 后面的select *应该改成select name, subject, mark, address from 表1 where xxxx,否则会报错。其他思路都可以
------解决方案--------------------
第一种复制,如果你的id是自增的
insert into 表1([name],subject,mark,address) select [name],subject,mark,address from 表1
如果id不是自增的
insert into 表1(id,[name],subject,mark,address) select max(id)+1,[name],subject,mark, address from 表1 group by ,[name],subject,mark, address
------解决方案--------------------
insert into 表1(name,subject,mark,address) 
select name,subject,mark,address 
from 表1
where ...

------解决方案--------------------
恩,楼上已经把楼主的语句级别的书写错误指明了。楼主的思路是正确的

语法逻辑没有问题,就是id列默认不能进行赋值

insert into 表(除id自增列外的其他列)
select 除id自增列外的其他列 from 表 where 条件