我正在处理一个非常大的数据库,大约有600万条记录。今天我添加了约30,000条错误记录。如何在MySQL中删除所有今天创建的记录?
我正在处理一个非常大的数据库,大约有600万条记录。今天我添加了约30,000条错误记录。如何在MySQL中删除所有今天创建的记录?
看起来created_at
是一个日期时间。尝试使用:
delete from table
where date(created_at) = curdate()
在运行此查询之前,当然要先运行一条select *
语句,并确保您要删除的数据是您真正想要删除的。
这个条件
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 ;
请尝试以下:
delete from table
where left(created_at,10) =curdate()
删除 从 表格 其中 ( (DAY(CallDate) = DAY(GETDATE()) AND (MONTH(CallDate) = MONTH(GETDATE()) AND (YEAR(CallDate) = YEAR(GETDATE()) )