这是一个示例数据:
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 one 的订单无效,因为订单 2 和订单 4 无效。是否可以通过 MySQL 查询来检查?
最佳答案
我认为您可以使用以下方法获取乱序的行:
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 关键字,因此它们不是列名的非常糟糕的选择。
关于Mysql:如何根据日期检查订单的有效性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46363397/