[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Удалить дубликаты в бд
UninstallZX
Вечер добрый. Подскажите, пожалуйста как удалить дубликаты в бд. Т.е. есть 2 одинаковых поля, и нужно ряд первого поля оставить, а второго удалить.



Спустя 5 минут, 12 секунд (29.06.2011 - 18:35) waldicom написал(а):
Один из простых (и поэтому не самых красивых) способов выбрать в промежуточную таблицу только уникальные строки, а потом переименовать новую в старую. Но такой способ подходит не всегда.

Спустя 4 минуты, 9 секунд (29.06.2011 - 18:39) UninstallZX написал(а):
Не подходит.

Спустя 4 минуты, 51 секунда (29.06.2011 - 18:44) bulgakov написал(а):
Может вам DISTINCT подойдет?

Спустя 10 секунд (29.06.2011 - 18:44) waldicom написал(а):
Тогда можно накидать простенький скриптик, который удалит дубликаты.

Спустя 1 минута, 8 секунд (29.06.2011 - 18:45) UninstallZX написал(а):
Насколько я знаю DISTINCT их только отфильтрует, а мне нужно именно удалить

Спустя 1 минута, 49 секунд (29.06.2011 - 18:47) waldicom написал(а):
Цитата (UninstallZX @ 29.06.2011 - 16:45)
Насколько я знаю DISTINCT их только отфильтрует, а мне нужно именно удалить

А если выполнить group by в подзапросе и удалить только те строки, в которых первичный ключ не входит в подмножество из подзапроса?

Спустя 2 минуты, 11 секунд (29.06.2011 - 18:49) UninstallZX написал(а):
waldicom, пример можно? А то я не очень понял.

Спустя 2 минуты, 27 секунд (29.06.2011 - 18:51) waldicom написал(а):
что-то примерно в сторону этого (не проверял, интересно будет проверить):

delete from table where id not in (select id from table group by id);

Спустя 6 часов, 3 минуты, 5 секунд (30.06.2011 - 00:54) UninstallZX написал(а):
Не сильно помогло. Может еще варианты будут?

Спустя 2 минуты, 38 секунд (30.06.2011 - 00:57) waldicom написал(а):
Почему не походит вариант с промежуточной таблицей?

Спустя 3 часа, 19 минут, 39 секунд (30.06.2011 - 04:17) olgatcpip написал(а):
у меня была подобная задача.

Вот что мне посоветовал наш бдшник

В таблице создать поле - уникальное. И заполнить его 1, 2, 3,...
а когда получаешь 2 одинаковые записи, если нет разницы. удалять . например, с меньшим этим новым значением. потом новое поле удалить.
Вариант waldicom мне больше нравится. smile.gif)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.