mysql删除重复数据

数据插入重复,想删除新插入的重复数据,保留原数据。

delete from bankaccounts where id not in

                              (select id from (

select min(id)as idfrom bankaccountsGROUP BY AccountNo HAVING COUNT(AccountNo)>1 )as total );



遇到的几个报错:

1.java.sql.SQLException: You can't specify target table 'bankaccounts' for update in FROM clause

错误提示:不能先将select出表中的某些值,再delete或update这个表(在同一语句中)。

即delete是没法和查询同一张表一起操作的。

解决办法就是嵌套一层子查询,再进行删除。

2.嵌套一层子查询又遇到报错,Mysql错误Every derived table must have its own alias。

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

一般是在多表查询或者子查询的时候会出现这个错误,因为在嵌套查询中,子查询的结果是作为一个派生表给上一级进行查询,所以子查询的结果必须有一个别名。 在子查询后加个as total即可。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容