mysql删除重复数据

2021-06-15  本文已影响0人  陈大胃

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

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即可。

上一篇 下一篇

猜你喜欢

热点阅读