首页 > 其他 > 详细

删除表中重复的数据并且保留其中一条-遇到问题

时间:2020-08-28 23:03:23      阅读:49      评论:0      收藏:0      [点我收藏+]

需求:删除表中的重复数据,并且保留重复数据中的一条:

数据表:

技术分享图片

 

 

最开始的写法是这样的:

DELETE FROM student WHERE id NOT IN (SELECT MIN(id) FROM student GROUP BY stu_no,stu_name,class_no,class_name,score);

 

但是报错了:[Err] 1093 - You can‘t specify target table ‘student‘ for update in FROM clause

 

关于这个错误,意思是说你不能先select出同一表中的某些值,再对这个表(在同一语句中)进行其他的操作(update,delete).Oracle可能不会报错。

 

然后改成:

DELETE FROM student WHERE id NOT IN (SELECT MIN(id) FROM (SELECT * FROM student) GROUP BY stu_no,stu_name,class_no,class_name,score);

 

又报错了:err 1248 - Every derived table must have its own alias

这句话的意思是说每个派生出来的表都必须有一个自己的别名

 

好嘛,再次修改:

DELETE FROM student WHERE id NOT IN (SELECT MIN(id) FROM (SELECT * FROM student) AS t GROUP BY stu_no,stu_name,class_no,class_name,score);

 

ok

删除表中重复的数据并且保留其中一条-遇到问题

原文:https://www.cnblogs.com/sy_test/p/13578803.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!