2012-03-25 58 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 ; 
相關問題