2015-04-29 144 views
-1

我想刪除使用SQL的重複行,同時留下其中一行。如何刪除SQL中的重複行?

我想刪除重複的行從被稱爲表「A」由的表:

A.AID, A.BID, A.AName, A.AType, A.APrice. 

在這個表中我有很多的所有數據的重複行正好相隔相同來自A.ID.

我想創建一個查詢,它將查找重複項,然後刪除重複項,確保其中一行被留下。我正在使用phpMyAdmin和MySQL。

+1

雖然也許不是最優雅的解決方案......如果您可以找到重複的行,您可以簡單地使用「限制」子句刪除它們。例如,如果您在給定某些條件的情況下找到3個重複記錄,則「從表中刪除(SOMETHING)限制2」。這將刪除其中的兩個,離開第三個。 – DragonYen

+3

'ALTER IGNORE TBLNAME ADD UNIQUE_INDEX'可能是最快的方法。 – Daan

+2

這個問題已經回答了幾十次。這是一個。 http://stackoverflow.com/questions/3311903/remove-duplicate-rows-in-mysql –

回答

2
DELETE FROM member 
WHERE id IN (SELECT * 
      FROM (SELECT id FROM member 
        GROUP BY member_id, quiz_num, question_num, answer_num HAVING (COUNT(*) > 1) 
       ) AS A 
      ); 

use group by and count

1
DELETE FROM 
    YourTable 
WHERE 
    AID NOT IN (SELECT 
        MAX(AID) 
       FROM 
        YourTable 
       GROUP BY 
        BID , 
        AName , 
        AType , 
        APrice); 
1

考慮下面的查詢,這將刪除所有重複的行阻止任何未來的重複行

ALTER IGNORE TABLE A ADD UNIQUE INDEX index_name (A.AID, A.BID, A.AName, A.AType, A.APrice);