我有一個帶有唯一索引的條形碼列表。數據已在每個條形碼的末尾添加了額外的字符(-xx)以防止出現重複,但是一旦刪除後綴,將會出現大量重複項。下面是數據的一個示例:Mysql - 刪除重複記錄
itemnumber barcode
17912 2-14
18082 2-1
21870 2-10
29219 2-8
然後我創建了兩個臨時表,瑪蒂和曼尼,既與itemnumber和剝離下來條形碼。所以,這兩個表將包含
itemnumber barcode
17912 2
18082 2
21870 2
29219 2
等
而且我試圖刪除所有,但在馬蒂表條形碼中的第一項「2」(和所有其他條形碼)。我希望然後用正確的第一項更新原始表,用戶可以在應用程序中及時修復重複項。
所以,這是我的查詢,刪除所有,但在馬蒂表中的每個條形碼
DELETE FROM marty
WHERE itemnumber NOT IN
(SELECT MIN(itemnumber) FROM manny GROUP BY barcode)
中的第一項有13萬行的馬蒂和曼尼。該查詢花了24小時,然後沒有正確完成。與服務器的連接崩潰,並且查詢沒有執行所有更新。
有沒有更好的方式來處理這一點,就不是我們的子查詢,我認爲這是造成延誤?這個團隊可能會放慢速度,因爲有這麼多的記錄。
感謝
是'itemnumber'獨特之處?如果是的話,我認爲你的方法最終會奏效,儘管它效率低下,因爲它搜索整個「曼尼」表中的每一行「烈士」。 – gcbenison 2012-03-20 12:44:39