2016-11-29 75 views
1

我有一個包含一些重複數據的表,並且我想根據存儲在「時間」列中的值從中刪除特定條目。刪除具有條件的特定重複數據

在我的表,ID:504289有3項:

Date  Time    Place ID 
20161128 2016-11-30 12:54 East 504289 
20161128 2016-11-30 12:55 East 504289 
20161128 2016-11-30 13:10 East 504289 

我想只刪除它和以前的條目之間的時間間隔爲15分鐘或更少的不同的條目。

應用於上表中,只有12:55記錄將被刪除,因爲1254是第一條記錄,而13:10比它大15分鐘。

任何人都可以幫助找出查詢嗎?

+0

請用你正在使用的數據庫標記你的問題。另外,'time'列的數據類型是什麼。 –

+0

時間列是varchar –

回答

2

使用標準SQL,您可以刪除另一條記錄15分鐘內的記錄。假設你time列某種你正在使用的數據庫日期/時間類型的,則SQL會是這個樣子:

delete from t 
    where exists (select 1 
        from t t2 
        where t2.date = t.date and 
         t2.time < t.time and 
         t2.time > t.time - interval '15 minute' 
       ); 

日期/時間算術數據庫之間顯著變化。以上是給出查詢形狀的一般形式。

+0

想象一下,表格有30行,時間戳彼此相距一分鐘。例如,從'12:00'到'12:29'。如果我正確理解你的查詢,它將刪除29行 - 除最後一行外。它看起來不像OP想要的。首先,他想保持第一排,而不是最後一排。 –