Mysql:如何根据日期检查订单的有效性

时间:2017-09-22 11:12:53

标签: mysql

以下是示例数据:

Key Start Date           Stop date              Order
1   2010-07-10 11:50:11  2011-10-20 9:10:59     1
1   2013-01-09 13:04:12  2013-03-11 13:42:25    2
1   2014-05-23 14:45:40  2015-10-16 8:53:54     3
1   2013-01-09 13:04:12  9999-12-31 0:00:00     4
2   2015-12-15 11:16:06  2016-12-15 11:16:06    1
2   2016-12-15 11:16:06  2017-12-15 11:16:06    2
2   2017-12-15 11:16:06  9999-12-31 0:00:00     3

我想检查特定订单的开始和结束日期是否不会使同一个密钥的另一个订单无效。在开始和停止日期范围内,只能有一个订单。

我想写一个MySQL查询来打印所有包含无效顺序的密钥。 在此示例中,Key 1的订单无效,订单2和订单4无效。是否有可能通过MySQL查询检查?

1 个答案:

答案 0 :(得分:1)

我认为您可以使用以下方式获取乱序的行:

select s.*
from sample s
where exists (select 1
              from sample s2
              where s2.key = s.key and
                    s2.startdate < s.startdate and
                    s2.order > s.order
             );

请注意,orderkey是SQL关键字,因此它们是列名称的选择非常糟糕。