2015-04-29 4 views
-1

Я пытаюсь удалить повторяющиеся строки с помощью SQL, оставив одну из строк позади.Как удалить повторяющиеся строки в SQL?

В таблице Я пытаюсь удалить повторяющиеся строки из называется таблица «А» состоит из:

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

В этой таблице у меня есть ряд повторяющихся строк со всеми данными точно так же, за исключением от A.ID.

Я пытаюсь создать запрос, который будет искать дубликаты, а затем удалить дубликат, чтобы одна из строк осталась позади. Я использую phpMyAdmin и MySQL.

+1

Возможно, это не самое элегантное решение ... если вы можете найти дубликаты строк, вы можете просто удалить их с помощью предложения «limit». Например, если вы обнаружите 3 дублирующихся записяния, учитывая какое-то условие, тогда «УДАЛИТЬ ИЗ ТАБЛИЦЫ ГДЕ (ЧТО-ТО) LIMIT 2». Это удалит два из них, оставив третье. – DragonYen

+3

'ALTER IGNORE TBLNAME ADD UNIQUE_INDEX', вероятно, самый быстрый способ. – Daan

+2

Этот вопрос был дан ответ десятками и десятками раз. Вот один. http://stackoverflow.com/questions/3311903/remove-duplicate-rows-in-mysql –

ответ

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); 
Смежные вопросы