2016-11-29 74 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想要的。首先,他想保持第一排,而不是最后一排。 –