Как удалить все записи, созданные сегодня? - PullRequest
4 голосов
/ 26 марта 2012

Я имею дело с очень большой базой данных ~ 6 миллионов записей.Я добавил ~ 30 000 плохих записей сегодня.Как я могу удалить все записи, созданные сегодня в MySQL?

Ответы [ 4 ]

10 голосов
/ 26 марта 2012

Кажется, created_at - это дата и время. Попробуйте:

delete from table
where date(created_at) = curdate()

Конечно, перед запуском этого запроса выполните select * и убедитесь, что данные, которые вы собираетесь удалить, именно те, которые вы действительно хотите удалить.

0 голосов
/ 26 марта 2012

Условие

WHERE created_at >= '2012-03-25' 
  AND created_at < '2012-03-26'

можно использовать для идентификации строк (и достаточно эффективно, если на created_at есть индекс).

Перед удалением убедитесь, что вы сделали резервную копиютаблица (или даже лучше, вся база данных).Кроме того, вы можете использовать некоторые (временные или постоянные) таблицы для хранения строк перед их удалением из таблицы.Затем вы удаляете эту временную таблицу, когда уверены, что стерли поврежденные данные - и ничего больше:

CREATE TABLE wrong_data AS
  SELECT *
  FROM tableX
  WHERE created_at >= '2012-03-25' 
    AND created_at < '2012-03-26' ;

DELETE t
FROM tableX AS t
  JOIN wrong_data AS w
    ON w.PK = t.PK ;
0 голосов
/ 26 марта 2012

Попробуйте ниже:

delete from table
where left(created_at,10) =curdate()
0 голосов
/ 26 марта 2012

DELETE ОТ Таблица ГДЕ ( (ДЕНЬ (CallDate) = ДЕНЬ (GETDATE ()) А ТАКЖЕ (MONTH (CallDate) = MONTH (GETDATE ()) А ТАКЖЕ (YEAR (CallDate) = YEAR (GETDATE ()) )

...