2016-04-17 3 views
1

Мне нужно удалить повторяющиеся записи (только если cod1 и Model повторяются) И сохраните только одно из них.Удалить строки с дублированными/повторяющимися данными в указанных столбцах

ID Cod1 Model 
1 332 mdl1 
2 332 mdl1 
3 332 mdl2 
4 450 mdl2 
5 450 mdl2 

Выход должен быть

ID Cod1 Model 
1 332 mdl1 
3 332 mdl2 
4 450 mdl2 

Действительно спасибо!

ответ

0

попробуйте этот. Замените вхождения Table1 с вашим фактическим именем таблицы.

DELETE FROM Table1 WHERE ID IN 
(SELECT * FROM 
    (SELECT T2.Id 
    FROM Table1 T1 
    INNER JOIN Table1 T2 
    ON T1.Cod1 = T2.Cod1 AND T1.Model = T2.Model 
    WHERE T2.ID > T1.ID 
    )T 
); 

sqlfiddle

Во внутреннем большинстве запроса, Т1 будет найти соответствующие записи T2, когда Cod1 и матч Модель и T2.Id будет больше ID. Таким образом, он возвращает идентификаторы строк для удаления. Но Mysql не позволяет вам удалять из запроса из той же таблицы, поэтому мы должны обернуть это внутри другого оператора SELECT, чтобы обмануть Mysql, давая вам возможность сделать это. Вот и все.

+0

Отличная идея и пример, прекрасно работает. Большое спасибо. – Peter013