2013-01-16 61 views
5

一個表中刪除重複的行我有一個包含像在不具有主鍵

name 
------ 
alpha 
alpha 
beta 
charlie 
charlie 

在這種情況下,我將如何刪除重複的行,但一個記錄應保持項的表項。上表沒有任何主鍵。

回答

3

試試這個

DELETE FROM item WHERE GREATEST(0,@num := IF(NAME = @NAME, @num + 1, 0),LEAST(0, LENGTH(@NAME := NAME)))>0 
1

重新創建表:

RENAME TABLE `testTable` TO `testTable2`; 

CREATE TABLE `testTable` 
SELECT DISTINCT `name` FROM `testTable2`; 

添加UNIQUE INDEX自己場上。

ALTER IGNORE TABLE `tableName` 
    ADD UNIQUE INDEX (`name`) 
+0

謝謝,但我不想申請唯一索引。我只想執行應該刪除重複行的查詢。 – sureyn

+0

@sureyn:但是如果你不應用一個唯一的密鑰,你會再次遇到同樣的問題。最好防止這種情況而不是不斷清理。 –

+0

@a_horse_with_no_name:您說的沒錯,但我的擔心是隻執行刪除查詢以除去一條記錄以外的重複行。順便說一句,我的問題已解決,非常感謝您的幫助。 – sureyn

相關問題