删除重叠时间的行

问题描述 投票:1回答:2

我正在尝试删除与时间相关的一些冲突日期,这是一个开始时间和停止时间的表,我想写一个查询来删除重叠数据,在这种情况下我想要删除13:00行和13:30行(第6/7行)因为那些时间已经被12:00覆盖到14:00行(第3/4行)。 VALUE_ENUM为1的所有行都是开始时间,VALUE_ENUM为0的所有行都是停止时间。

以下是我表中数据的示例:

SITE_ID ------- DEV_ID ------- SCHEDULE_TIME ------- VALUE_ENUM
---------------------------------------------------------------
1               3000           09:30:00              1
1               3000           11:30:00              0
1               3000           12:00:00              1
1               3000           14:00:00              0
1               3000           13:00:00              1
1               3000           13:30:00              0
1               3000           16:30:00              1
1               3000           18:30:00              0
sql delete-row
2个回答
0
投票

当它的schedule_time小于前一行时,似乎你想要删除一行。但是你如何订购行?还有另一栏吗?否则,一旦删除,下一次插入很可能就在那个位置,下次你最终会错误地删除很多行。

不知道如何在单个sql语句中完成此操作,但程序算法很简单 - 将last_schedule_time初始化为null然后在每行比较中;如果更少则删除或将last_schedule_time分配给当前。


0
投票

感谢您的帮助,但我能够通过将特定系统的先前时间设置为临时变量来解决问题,然后与下一次进行比较以查看它们是否落在临时时间之间,如果它们确实存在,我只是跳过了完全插入,再次感谢您的意见和建议。

© www.soinside.com 2019 - 2024. All rights reserved.