在網上查找刪除重復數據保留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