MySQL удаляет повторяющиеся записи, но сохраняет одну на основе даты

0

как удалить все записи с тем же адресом электронной почты, но сохранить последнюю по дате? форматом даты в MySQL является "0000-00-00". У меня есть следующий запрос:

delete from customer
 where date not in (
    select max(data)
      from customer
     group by email)

похоже, не работает.

и можете ли вы показать, как просто сохранить одну запись на основе ничего, поскольку мои записи не имеют id.

  • 0
    Вполне может быть быстрее создать новую таблицу, выбрав только нужные строки
Теги:

1 ответ

-1

Присоединитесь к подзапросу, который получает последнюю дату для каждого клиента.

DELETE c1 FROM customer AS c1
JOIN (SELECT email, MAX(date) AS maxdate
      FROM customer
      GROUP BY email) AS c2
ON c1.email = c2.email AND c1.date != c2.maxdate
  • 0
    спасибо за ответ, но так как я получил более 100 000 записей в одной таблице, я попытался выполнить несколько таких запросов, после чего система зависла.
  • 0
    Попробуйте добавить индекс: ALTER TABLE customer ADD INDEX (email, date)
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню