我正在使用Oracle SQL Developer,Version 4.0.0.13,Build 13.80
我有一个有趣的问题,我的查询以优先级(1到4)和日期/时间返回给我大量的数据。我要完成的是从具有优先级4的表中删除所有行,下一次发生的事件是在5分钟内从优先级1-3的前一个表中删除所有行。
也许这听起来很混乱,但是请看下面的数据。
Date Priority
- 2013-03-28 21:42:08 4
- 2013-03-28 21:45:20 1
- 2013-03-28 21:45:16 1
- 2013-03-28 21:46:37 1因此,我想从这里删除第一行,因为它具有优先级4,而且下一个事件发生在5分钟的时间框架内,并且在(1,2,3)中。如果下一行也是优先级4,我们只需忽略它并继续前进。
在表中,我有日期、优先级和RowID的列,那么如何检查优先级4之后的行并比较日期以查看5分钟的差异,当然,所有的事情都是按Date asc排序的?
谢谢
发布于 2014-03-31 15:08:14
听起来你想要的是
DELETE FROM table_name a
WHERE priority = 4
AND EXISTS( SELECT 1
FROM table_name b
WHERE b.priority IN (1,2,3)
AND b.id != a.id
AND b.dt BETWEEN a.dt AND a.dt + interval '5' minute )我假设您的列名实际上不是rowid和date,因为它们是保留词。我使用的是id和dt。
https://stackoverflow.com/questions/22764992
复制相似问题