2012-03-25 129 views
3

我正在处理一个非常大的数据库〜6百万条记录。我今天添加了约3万条不良记录。我如何删除今天在MySQL中创建的所有记录?如何删除今天创建的所有记录?

+0

他们是否有创建时间戳? – icktoofay 2012-03-25 22:41:48

+0

yes created_at:“2012-03-25 21:52:21”但每个都非常具体 – 2012-03-25 22:42:56

+1

请不要告诉你不在表中存储数据的创建时间。 – 2012-03-25 22:43:24

回答

8

看来created_at是日期时间。尝试:

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

当然,运行select *来运行此查询,并确保你要删除的数据是你真的想删除一个之前。

+2

这会很慢。 – 2012-03-25 22:46:22

0

DELETE FROM 表 WHERE ( (DAY(CallDate)= DAY(GETDATE()) AND (MONTH(CallDate)= MONTH(GETDATE()) AND (YEAR(CallDate)= YEAR(GETDATE()) )

0

尝试以下:

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

条件

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

可用于识别行(并且如果在created_at上存在索引则相当有效)。

删除之前,请确保备份表(或更好的是整个数据库)。另外,在从表中删除行之前,可以使用一些(temp或permament)表来存储行。然后,当您确定删除了违规数据时,删除此临时表 - 而且没有别的:

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 ;