MySql刪除重復只保留一條
阿新 • • 發佈:2018-04-14
pda info nbsp update HA avi com div select
本來要刪除error_barcode表中barcode值重復的只保留一條
表結構如下(PS:id是自增長,該圖是刪除成功所以id不連續)
sql語句如下:
DELETE FROM error_barcode WHERE barCode IN ( SELECT barCode FROM error_barcode GROUP BY barCode HAVING count(barCode) > 1 ) ANDid NOT IN ( SELECT min(id) FROM error_barcode GROUP BY barCode HAVING count(barCode) > 1 )
但是卻報錯誤
上網查找了下,這是MySql的一個問題,就是不能再同一個語句裏對同一張表先select某些值在update,
那就需要把子查詢在放入一個子查詢中
DELETE from error_barcode WHERE barCode in( select a.barCode from(select* from error_barcode)a GROUP BY barCode having count(barCode)>1 )and id not in ( select min(id) from(select * from error_barcode)b GROUP BY barCode having count(barCode)>1 )
可以看到我把下面兩個子查詢
SELECT barCode FROM error_barcode GROUP BY barCodeHAVING count(barCode) > 1
SELECT min(id) FROM error_barcode GROUP BY barCode HAVING count(barCode) > 1
改成
select a.barCode from(select * from error_barcode)a GROUP BY barCode having count(barCode)>1
select min(id) from(select * from error_barcode)b GROUP BY barCode having count(barCode)>1
就行了
MySql刪除重復只保留一條