Как удалить дубликаты на таблице MySQL?

Ваш CSS

.pagebreak { page-break-inside:avoid; page-break-after:always; }

Вы когда-нибудь пробовали это вместо этого?

.pagebreak { page-break-inside:always; page-break-after:always; }

держите меня в курсе вашей проблемы

154
задан DineshDB 28 March 2018 в 10:43
поделиться

3 ответа

После этого удалите дубликаты для всех SID, а не только для одного.

С временной таблицей

CREATE TABLE table_temp AS
SELECT * FROM table GROUP BY title, SID;

DROP TABLE table;
RENAME TABLE table_temp TO table;

Поскольку temp_table только что создана, у нее нет индексов. Вам нужно будет воссоздать их после удаления дубликатов. Вы можете проверить, какие у вас есть индексы в таблице с помощью SHOW INDEXES IN table

Without temp table:

DELETE FROM `table` WHERE id IN (
  SELECT all_duplicates.id FROM (
    SELECT id FROM `table` WHERE (`title`, `SID`) IN (
      SELECT `title`, `SID` FROM `table` GROUP BY `title`, `SID` having count(*) > 1
    )
  ) AS all_duplicates 
  LEFT JOIN (
    SELECT id FROM `table` GROUP BY `title`, `SID` having count(*) > 1
  ) AS grouped_duplicates 
  ON all_duplicates.id = grouped_duplicates.id 
  WHERE grouped_duplicates.id IS NULL
)
55
ответ дан 23 November 2019 в 21:58
поделиться

это удаляет дубликаты на месте, не создавая новую таблицу

ALTER IGNORE TABLE `table_name` ADD UNIQUE (title, SID)

примечание: работает хорошо, только если индекс умещается в памяти

209
ответ дан 23 November 2019 в 21:58
поделиться

вот то, как я обычно устраняю дубликаты

  1. , добавляет временный столбец, называет его вообще, Вы хотите (я буду относиться как активный)
  2. группа полями, что Вы думаете, не должен быть дубликат и устанавливать их активное на 1, группирование выберет только одно из дублирующихся значений (не выберет дубликаты) для этого, столбцы
  3. удаляют тех с активным нулевым
  4. столбцом отбрасывания, активным
  5. дополнительно (если соответствия к Вашим целям), добавьте уникальный индекс для тех столбцов, чтобы не иметь дубликаты снова
0
ответ дан 23 November 2019 в 21:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: