Удаление повторяющихся записей

#mysql

#mysql

Вопрос:

Как удалить дубликаты записей из базы данных без использования distinct , group by

 Id.        Name              age         dob
1.           b.               11.        1992
2.           d.               14.        1967
3.           b.               11.        1992
  

Комментарии:

1. В случае строк с идентификаторами 1 и 3 есть ли какие-либо предпочтения относительно того, какая строка должна быть сохранена, а какая строка должна быть удалена?

2. какую версию mysql вы используете? P.S. Такого рода вопросы задают часто … вы проводили какие-либо исследования?

3. Повторяющиеся записи на основе Name , age и dob ?

4. @Arulkumar дублирующие записи на основе имени

5. MySQL 5.6.16 @ADyson

Ответ №1:

Вы можете попробовать это: Предположим, test — это имя вашей таблицы :-

 delete th 
from test as th 
where th.id IN (select id 
                from (select a.id  
                      from test as a 
                      left join test as b 
                          on a.name = b.name where a.id>b.id) AS T);
  

Ответ №2:

Как вы упомянули, дублирование записи на основе Name , используя ROW_NUMBER() , вы можете обойтись без DISTINCT и GROUP BY .

Запрос будет:

 DELETE FROM (
    SELECT Id, ROW_NUMBER() OVER(PARTITION BY Name ORDER BY Id) AS RN
    FROM Table
) AS Q
WHERE RN = 1
  

Комментарии:

1. Мы не можем использовать order by, group by и distinct

2. @VibrateTasks почему бы и нет? Это какой-то экзаменационный вопрос с произвольными бессмысленными ограничениями?

3. @ADyson brother в соответствии с условием, я не могу использовать group by, order by и distinct

4. Условие @VibrateTasks для чего ? Это была моя точка зрения. Это ваше домашнее задание? Если это так, то я бы надеялся, что вы сначала провели немного больше собственных исследований, чтобы облегчить свое обучение, иначе простое кормление вас ответом с ложечки на самом деле не поможет вам многому научиться. Ваш вопрос предполагает полное отсутствие усилий в этом отношении. Также в исходном вопросе вы не упомянули, что ORDER BY был запрещен, так что этот ответ совершенно законен с этой точки зрения. Не меняйте условия по ходу работы, проясните это с самого начала

5. @ADyson да, это мой вопрос для интервью.