2015-02-10 142 views
-1

我想爲我的SQLite數據庫建立一個DELETE語句,它將確保任何超過X數量的記錄都將被刪除。我對SQL不太熟悉,所以我不知道如何寫這個,而且我還需要確保記錄首先按日期字段進行排序,並將其存儲爲INTEGER,以便確保我' m保留最新的X行並刪除較舊的記錄。SQLite iOS DB刪除舊記錄

任何幫助如何做到這一點非常感謝。

+0

你不需要排序記錄,你不需要子選擇。只要'從表中刪除where datefield 2015-02-10 21:44:16

回答

0

它可以在SQLite的使用子查詢和利用限制

您在此處的子查詢將返回這是需要刪掉根據您的X限制(5)所有的ID來實現。我希望它能幫到你

DELETE FROM TABLENAME WHERE ID IN ( 
    SELECT ID FROM TABLENAME 
    WHERE DATE < strftime('%s','now') limit 5 
    ); 
0

你可以使用類似下面的查詢。你應該也可以在你的日期欄上有一個索引。

DELETE FROM mytable WHERE date_column >= (
    SELECT date_column 
    FROM mytable 
    ORDER BY date_column 
    OFFSET num_rows_you_want_to_keep 
    LIMIT 1 
)