Sql 根据条件删除特定的重复数据
我有一个表,其中包含一些重复的数据,我想根据时间列中存储的值删除其中的特定条目 在我的表格中,ID:504289有3个条目:Sql 根据条件删除特定的重复数据,sql,sql-server,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 我只想删除与以前条目之间的时间间隔相
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分钟
有人能帮您解决这个问题吗?使用标准SQL,您可以删除一条记录,而该记录与另一条记录的距离不超过15分钟。假设您的时间列是所使用数据库的某种日期/时间类型,则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'
);
不同数据库的日期/时间算法差异很大。以上是给出查询形状的通用表格。请用您正在使用的数据库标记您的问题。此外,时间列的数据类型是什么。时间列是varcharImagine,一个表有30行,时间戳彼此间隔一分钟。从12点到12点29分。如果我正确理解了您的查询,它将删除29行-除最后一行之外的所有行。这看起来不像OP想要的。首先,他想保留第一排,而不是最后一排。