The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"MySQL delete matching rows"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Разное / Linux)
Изначальное сообщение [ Отслеживать ]

"MySQL delete matching rows"  +/
Сообщение от handler2006 email(ok) on 08-Дек-11, 14:00 
Здравствуйте!
Имеется таблица в БД MySQL с набором полей и содержащая набор записей, некоторые из них являются дубликатами(значение всех полей совпадает). Как удалить все записи-дубликаты из таблицы.
Спасибо
Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "MySQL delete matching rows"  +/
Сообщение от PavelR (ok) on 08-Дек-11, 14:14 
> Здравствуйте!
> Имеется таблица в БД MySQL с набором полей и содержащая набор записей,
> некоторые из них являются дубликатами(значение всех полей совпадает). Как удалить все
> записи-дубликаты из таблицы.
> Спасибо

DELETE .... LIMIT 1

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "MySQL delete matching rows"  +/
Сообщение от YuryD (??) on 08-Дек-11, 14:22 
>> Здравствуйте!
>> Имеется таблица в БД MySQL с набором полей и содержащая набор записей,
> DELETE .... LIMIT 1

Хороший совет :) Я бы создал новую таблицу с уникальным индексом на эти поля, и залил бы в нее, а уж после проверки...

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "MySQL delete matching rows"  +/
Сообщение от handler2006 email(ok) on 08-Дек-11, 16:23 
>>> Здравствуйте!
>>> Имеется таблица в БД MySQL с набором полей и содержащая набор записей,
>> DELETE .... LIMIT 1

Вот этого вообще не понял
>  Хороший совет :) Я бы создал новую таблицу с уникальным индексом
> на эти поля, и залил бы в нее, а уж после
> проверки...

Дело в том, что поля могут повторяться - одному и тому же значению могут соответствовать разные значения других полей. Важно избежать дубликатов полных совпадений записей.
Нашел совет по MySQL:

ALTER IGNORE TABLE  table_dublicate ADD UNIQUE INDEX(field1,..,fieldN)

Но у меня это вариант почему-то не сработал - вернуло то же количество записей


Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

5. "MySQL delete matching rows"  +/
Сообщение от handler2006 email(ok) on 08-Дек-11, 17:01 
Пардон, ошибка вышла
>
ALTER IGNORE TABLE  table_dublicate ADD UNIQUE INDEX(field1,..,fieldN)

Запрос верный, просто я в качестве полей указал еще и PrimaryKey - конечно ничего не удалилось. Без первичного ключа почистилась таблица удачно


Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

4. "MySQL delete matching rows"  +/
Сообщение от JohnProfic (ok) on 08-Дек-11, 16:59 
> Здравствуйте!
> Имеется таблица в БД MySQL с набором полей и содержащая набор записей,
> некоторые из них являются дубликатами(значение всех полей совпадает). Как удалить все
> записи-дубликаты из таблицы.
> Спасибо

делать
DELETE FROM tbl a NATURAL JOIN tbl b LIMIT 1;
до тех пор пока Affected rows != 0

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

6. "MySQL delete matching rows"  +/
Сообщение от handler2006 email(ok) on 09-Дек-11, 15:43 
> делать
> DELETE FROM tbl a NATURAL JOIN tbl b LIMIT 1;
> до тех пор пока Affected rows != 0

Не буду утверждать, но, по-моему, не каждый MySQL поймет этот синтаксис

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру