簡體   English   中英

SQLITE 3-每個項目刪除早於N個實例

[英]SQLITE 3 - Delete older than N instances per item

我有一個帶有RUN_TIME和OPERATION_NAME列的表。 我想通過刪除每個操作的N個以上實例來修剪表。 例如:如果輸入表是

RUN                 OPERATION
13/11/2012 05:39    GAM010P0
14/11/2012 05:39    GAM010P0
15/11/2012 05:39    GAM010P0
13/11/2012 05:09    GAM020P0
14/11/2012 05:09    GAM020P0
15/11/2012 05:09    GAM020P0
16/11/2012 05:09    GAM020P0
01/11/2012 17:09    GAM060P0

而且我想維護每個操作的2個最新實例,輸出為:

RUN                 OPERATION
14/11/2012 05:39    GAM010P0
15/11/2012 05:39    GAM010P0
15/11/2012 05:09    GAM020P0
16/11/2012 05:09    GAM020P0
01/11/2012 17:09    GAM060P0

通常,我會使用RANK分析功能按RUN_TIME進行排名,並按OPERATION_NAME進行分組; 但是,由於該表存在於sqlite DB上,因此我無法編寫刪除SQL語句來實現此目的。

您必須計算數據庫中存在多少個相同操作的記錄。 如果對於特定記錄,有兩個或更多個其他記錄的時間戳較新,則應刪除該記錄:

DELETE FROM MyTable
WHERE (SELECT COUNT(*)
       FROM MyTable AS Newer
       WHERE Newer.OPERATION = MyTable.OPERATION AND
             Newer.RUN > MyTable.RUN
      ) >= 2

請不要因為必須使用像yyyy-mm-dd這樣的日期格式,並且在開始時使用最重要的字段,以便進行日期比較。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM