删除条件为

时间:2016-11-29 02:48:01

标签: sql sql-server

我有一个包含一些重复数据的表,我想根据存储在时间列中的值从中删除特定条目。

在我的表中,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分钟。

任何人都可以帮忙弄清楚查询吗?

1 个答案:

答案 0 :(得分: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'
                 );

日期/时间算术在数据库之间差异很大。以上是提供查询形状的一般形式。