如何删除今天创建的所有记录?

7

我正在处理一个非常大的数据库,大约有600万条记录。今天我添加了约30,000条错误记录。如何在MySQL中删除所有今天创建的记录?


它们有创建时间戳吗? - icktoofay
是的,created_at字段的值为"2012-03-25 21:52:21",但每个字段都非常具体。 - JZ.
1
请不要告诉我你的表中没有存储数据创建时间。 - Korhan Ozturk
它们存储为什么数据类型? - icktoofay
通过Ruby on Rails Active Record获取日期时间...我不知道在MySQL中如何翻译。 - JZ.
4个回答

21

看起来created_at是一个日期时间。尝试使用:

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

在运行此查询之前,当然要先运行一条select *语句,并确保您要删除的数据是您真正想要删除的。


1

这个条件

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

请尝试以下:

delete from table
where left(created_at,10) =curdate()

0

删除 从 表格 其中 ( (DAY(CallDate) = DAY(GETDATE()) AND (MONTH(CallDate) = MONTH(GETDATE()) AND (YEAR(CallDate) = YEAR(GETDATE()) )


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接