【发布时间】:2015-04-28 18:56:52
【问题描述】:
包含 From Date 和 To Date 的表格。查询应该删除 FromDate 和 ToDate 在已存在行的区间内的那些行。
表格
bookingID FromDate ToDate
15 2015-04-29 17:00:00.000 2015-04-29 18:00:00.000
13 2015-05-01 10:00:00.000 2015-05-01 14:00:00.000
14 2015-05-01 13:00:00.000 2015-05-01 14:00:00.000
结果
bookingID FromDate ToDate
13 2015-05-01 10:00:00.000 2015-05-01 14:00:00.000
15 2015-04-29 17:00:00.000 2015-04-29 18:00:00.000
截至日期 2015 年 5 月 1 日,第 1 行涵盖从上午 10 点到下午 2 点的时间。时间为下午 1 点到 2 点的第 2 行已被第 1 行覆盖。
编辑
为了更清楚地说明这种情况,表中不能有更多的两个区间,即 intreval B 中的 A 是唯一的复杂度级别。 所以如果A在intreval B中,那么B应该被删除
【问题讨论】:
-
这是真正应该用 php 或 python 之类的脚本语言来完成的事情
-
@TobyAllen:感谢您的建议,我在想是否可以在 SQL 中轻松实现
-
SQL 并不是真正合适的编程语言,这里的逻辑相当复杂,所以我认为它需要一个简单的脚本或一个极其复杂的存储过程。
-
您是要实际删除行(您说“删除行”)还是要执行不会选择这些行的查询?
-
我不同意@Toby。这非常适合 SQL,甚至可能比其他选项更好。
标签: mysql sql sql-server