Mysql刪除重復數據保留最小的id

在網上查找刪除重復數據保留id最小的數據,方法如下:

DELETE  FROM  ????people  WHERE  ????peopleName?IN?(  ????????SELECT  ????????????peopleName  ????????FROM  ????????????people  ????????GROUP?BY  ????????????peopleName  ????????HAVING  ????????????count(peopleName)?>?1  ????)  AND?peopleId?NOT?IN?(  ????SELECT  ????????min(peopleId)  ????FROM  ????????people  ????GROUP?BY  ????????peopleName  ????HAVING  ????????count(peopleName)?>?1  )

自己使用的時候顯示報錯:

1?delete?from?tb?where?id?in?(SELECT?max(id)?from?tb?GROUP?BY?user?HAVING?count(user)>1)

[Err] 1093 – You can’t specify target table ‘XXX’ for update in FROM clause

暫時不知道是什么原因導致的。

然后想辦法分布操作,首先篩選出有重復user的數據,然后用max()選出其中較大的那一行:

SELECT max(id) from tb GROUP BY user HAVING count(user)>1

然后再根據得到的max(id)逐條刪除多余的數據

1?delete?from?tb?where?id=xx

? 版權聲明
THE END
喜歡就支持一下吧
點贊10 分享