用一个sql语句复制表中的所有行插入到表的后面(主键自增),在用一句sql语句删除重复的行

发布时间:2024-05-22 23:38 发布:上海旅游网

问题描述:

这是一道面试题,要求死了,别乱改题意
mysql 插入和查询重复的语句都能运行,删除运行不了

问题解答:

例如表:student(id,name,sex.age),id主键自增
把表中纪录复制再插入到这个表后面
insert into student select name,sex,age from student;
原则,除自增列外的所有列都要写出,注意查询字段的顺序和表对应,要不如下:
insert into student(sex,name,age) select sex,name,age from student;
查询字段和插入字段对应

删除重复的行
delete from student where id in (select a.id id from student a,student b where a.name=b.name and a.sex = b.sex and a.age=b.age and a.id<>b.id)
其中查询语句为查出所有重复纪录的id
select a.id id from student a,student b where a.name=b.name and a.sex = b.sex and a.age=b.age and a.id<>b.id
原则除主建外所有字段都要相等
and a.id<>b.id ,这个不加就会把正个表的数据算重复
因为a和b都是student表,自己和自己比当然什么都一样,
and a.id<>b.id 就是和自己外的其他纪录比

运行了,sql server2000的数据库,没有问题
你什么库

你是从一个表复制再插入到这个表后面,那不是表里面都是重复的行,还是说你只是想让原来的行用新的主键,你可以直接update一下就行了

非不费劲,结果不一样吗

热点新闻