Удаление повторяющихся строк в таблицах MySQL
Потребовалось мне удалять дублирующиеся строки в таблицах MySQL. При чем, на регулярной основе. Гугл выдал не так уж много годных рецептов. Реальных вариантов не так уж много: Первый, второй, третий.
Немного поковырявшись, выбрал оптимальный для моего случая вариант. Упрощённый пример:
1 |
После выполнения данного запроса полученный индекс стоит удалить, чтобы избежать сообщений при дальнейшем добавлении одинаковых строк. Для этого следует сначала узнать имя получившегося индекса, если оно не было указано заранее:
1 |
Затем удалить его:
1 |
При разовых операциях такого рода можно указывать SQL запросы прямо в панели PHPMyAdmin.
Однако, оказалось не всё так просто. После выполнения данной процедуры выяснилось, что MySQL почему-то не чувствительна к регистру русских букв и посчитала варианты с разным написанием слов как повторяющиеся. После небольшого консилиума с другим программистом PHP была изменена кодировка строк в таблице MySQL с utf8_general_ci (case insensitive — нечувствительная к регистру букв) на utf8_bin (utf8_general_cs — case sensitive — чувствительная к регистру). Проблема была решена.
1 Комментарий
Январь 22nd, 2011
Спасибо
Добавить комментарий