以下是示例数据:
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查询检查?
答案 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
);
请注意,order
和key
是SQL关键字,因此它们是列名称的选择非常糟糕。