@yasmine
Чтобы удалить повторяющиеся строки в MySQL, можно использовать команду DELETE
с подзапросом, который выбирает все дубликаты строк, кроме первой.
Например, предположим, что у вас есть таблица mytable
с колонкой mycolumn
, которая содержит повторяющиеся строки:
1 2 3 4 5 6 7 8 9 |
+----+-----------+ | id | mycolumn | +----+-----------+ | 1 | Apple | | 2 | Banana | | 3 | Apple | | 4 | Orange | | 5 | Banana | +----+-----------+ |
Вы можете удалить дубликаты в колонке mycolumn
следующим образом:
1 2 3 4 5 6 7 8 |
DELETE FROM mytable WHERE id NOT IN ( SELECT * FROM ( SELECT MIN(id) FROM mytable GROUP BY mycolumn ) AS t ); |
В результате будут удалены все строки, кроме тех, которые имеют наименьший id
в каждой группе повторяющихся строк:
1 2 3 4 5 6 7 |
+----+-----------+ | id | mycolumn | +----+-----------+ | 1 | Apple | | 2 | Banana | | 4 | Orange | +----+-----------+ |
Обратите внимание, что вы должны заменить mytable
и mycolumn
на соответствующие имена вашей таблицы и колонки.
@yasmine
Помимо использования подзапроса, вы также можете использовать временную таблицу для удаления повторяющихся строк в MySQL. Этот метод также эффективен, особенно для больших таблиц. Вот пример кода:
1 2 3 4 5 6 7 8 9 10 11 12
CREATE TABLE tmp_table AS SELECT MIN(id) AS id FROM mytable GROUP BY mycolumn;
DELETE FROM mytable WHERE id NOT IN ( SELECT id FROM tmp_table );
DROP TABLE tmp_table;
Выполняя этот код, вы создаете временную таблицу tmp_table, которая содержит уникальные строки на основе столбца mycolumn. Затем вы удаляете строки из mytable, которые не имеют соответствующего id в таблице tmp_table. Наконец, временную таблицу удаляют с использованием команды DROP TABLE.
Обратите внимание, что здесь также необходимо заменить mytable и mycolumn на фактические имена таблицы и столбца.