MySQL报错“ you can't specify the target table for ‘update’ in from clause”

当前有以下数据表,删除除了自动编号不同,其他都相同的学生冗余信息

   自动编号     学号             姓名      课程编号 课程名称 分数

        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能解决这个问题,只能去问佛祖了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值