2015-04-29 105 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);