×

Вокруг мира Последние новостипро сссрКрымТайны историитунисВыборгСтрашное и мистическоефакты и мирОбщество, мирПетербург и окрестноститурция
Интересно МузыкаМистика и ГаданияАнекдотыуроки по html,css,js,php
Исскуство и поэзия Японские стихи и прозаМифы и Легенды древнего мираСтихи Серебренного векаПритчиСтихи Золотого векаБасни
Разные эпохи про сссрСказки народов мираСредневековьеТайны историиДревняя Азия
Разное Страшное и мистическоеКомедия "Дино и его друзья"РаскраскиОригамиКонвертеры
общество и мир ПсихологияАфоризмы и цитатыПоследние новостифакты и мирОбщество, мир

-----------

Вашему сайту нужна помощь? Политика конфидициальности Разместить рекламу

Удаление дубликатов строк из таблицы MySQL


дубликаты, похожие, похожие строки, дубликаты строк, удалить дубликаты строк, удалить похожие строки, избавиться, от дубликатов, от строк, удалить дублирующиеся строки, php, mysql, sql, phpmyadmin, избавление, удалить, удаление, повторы, повторяющиеся, строки, строка, данные, бд, db, база данных, таблица, таблицы,

Иногда после заполнения таблицы или импорта в неё разных строк бывает, что появляются похожие строки и данные, которые нужно удалить.
Для того, чтобы удалить похожие строки (дубликаты) и оставить одну нужную, используйте следующий mysql-запрос:

Вариант 1:
Выполняется в 4 запроса. Сначала запрос автоматически создает временную таблицу, очищает ее, заносит в нее id только уникальных записей и удаляем из основной таблицы записи с теми id, которые не попали во временную. (естественно, если у вас большая таблица (в несколько сотен тысяч строк), то обработка запроса займет много времени - это нормально)

Условие: есть таблица "table" и строки "id", email - колонка, где есть дублирующиеся адреса пот клиентов. нам нужно избавиться от вторых дублей.

CREATE TEMPORARY TABLE IF NOT EXISTS temp_table(`id` int(10)) ENGINE=MEMORY;
TRUNCATE TABLE temp_table;
INSERT INTO `temp_table` (SELECT MIN(id) as id FROM `table` GROUP BY `email`);
DELETE FROM `table` WHERE `id` NOT IN (SELECT `id` FROM `temp_table`);


temp_table - в примере выше, временная таблица, которая автоматиески создастся и удалится
email - коллонка, где есть дубликаты и которые нужно удалить.


Вариант 2:
Второй вариант, как удалить дубликаты строк из таблицы MySQL гораздо проще. Мы просто делаем JOIN таблицы на саму себя по условию равенства полей, удаляя записи с большим id.

DELETE t1 FROM `table` t1, `table` t2 WHERE t1.email=t2.email AND t1.id > t2.id

Лично я чаще всего использую вариант 2, но вариант 1 тоже хорош, для того что бы удалить дубликаты строк MySQL

ВАЖНО!!! Перед началом испробуте эти таблицы на своем домашнем сервере (локальном), а уже потом работайте с таблицей на реальном сервере. Это нужно т.к. с локального легче сохранить базы данных, чем с реального. p.s. или можете просто создать тестовую таблицу с данными и назвать её "test_table"



Комментарии

Комментариев пока нет. Оставь тут свой комментарий или анекдот!


Комментарии к посту






 На всех процессах жизни литература выступает одновременно в роли обвинителя и в роли защитника. Обвинителя зла и защитника добра. Последняя роль наиболее трудная, — особенно если думать не о том, чтобы оправдать подзащитного, а о том, чтобы оправдать доверие начальства.

Смешной афоризм


Norway
Суточный перепад температуры на поверхности Луны весьма велик: температура опускается до минус 170 градусов Цельсия в ночное время и поднимается до плюс 130 градусов Цельсия, когда Солнце в лунном зените.

[ Интересные факты о мире ]






Объеденить два блока в одном. css, html
Не сохраняются абзацы и новые строки PHP MySQL
тунис Крым Общество, мир факты и мир Страшное и мистическое Тайны истории про ссср Выборг Последние новости Петербург и окрестности турция






×

Рассказы из категории: Создание сайта (html,css,php,js)