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

标签 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 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
             );

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

关于Mysql:如何根据日期检查订单的有效性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46363397/

相关文章:

c# - 在 C# 中使用动态数据填充 Crystal Reports 等控件

php - 关系:类别需要article_id

mysql - Sequelize 渴望获取多对多

Mysql 返回两个表中不重复的行

php - 如何更新列的值作为sql中两个变量之间的差异?

php - 不在 PHP 中将结果提取到数组中

MySQL SELECT 计算受到比其他 SELECT 字段更严格的标准 - 如何?

mysql - 在 scala 中使用 sqlContext.sql 进行子查询

MySQL 到 Oracle 数据库查询

php - 如何在group by语句中使用order by子句