当前有以下数据表,删除除了自动编号不同,其他都相同的学生冗余信息
自动编号 学号 姓名 课程编号 课程名称 分数
1 2005001 '张三 1 语文 81
2 2005001 '李四 1 语文 81
3 2005001 张三 1 语文 81
4 2005001 张三 1 语文 81
使用一下SQL语句在MySQL数据库中删除冗余信息:
delete from #成绩 where 自动编号 not in (
select MIN(自动编号) from #成绩 group by 学号,姓名,课程编号,课程名称,分数)
但MySQL数据库报错,错误信息为:
you can't specify the target table for ‘update’ in from clause。
经百度、谷歌后,发现是MySQL自身问题。
于是不得不绕行,从而删除冗余数据:
1.创建临时表
create table tmp asselect min(自动编号) 自动编号 from chengji group by 学号,姓名,课程编号,课程名称,分数
2.使用临时表查出的数据,对待操作表进行删除操作
delete from chengji where 自动编号 not in ( select 自动编号 from tmp )
3.删除临时表
drop tmp
打完收工。至于什么时候MySQL能解决这个问题,只能去问佛祖了。