检查 MYSQL 表行中是不是存在特定时间范围
Posted
技术标签:
【中文标题】检查 MYSQL 表行中是不是存在特定时间范围【英文标题】:Check Specific Time range exists inside the MYSQL table rows检查 MYSQL 表行中是否存在特定时间范围 【发布时间】:2020-07-16 12:52:10 【问题描述】:我有一张表,其中包含各种事件的开始和结束日期时间。在图片中,您可以看到为事件定义了不同的日期范围作为事件的开始时间和结束时间。
现在,当用户要添加新事件时,我需要根据现有记录检查时间。我在查询之间尝试过,但它没有给我正确的结果。
Start END
2020-07-20 14:15 2020-07-20 15:00 - Not allowed(record #1)
2020-07-20 10:30 2020-07-20 11:00 - Not allowed (record #3)
2020-07-20 11:00 2020-07-20 12:00 - Not allowed(record #3)
2020-07-20 13:00 2020-07-20 14:00 - Allowed
如何根据 mysql 中的上述所有条件获得至少重复(不允许)记录的数量?
【问题讨论】:
【参考方案1】:您希望确保新插入的行不会与现有间隔重叠。一种选择是not exists
:
insert into mytable (start, end)
select v.*
from (select '2020-07-20 14:15' start, '2020-07-20 15:00' end) v
where not exists (
select 1
from mytable t
where t.start <= v.end and t.end >= v.start
)
【讨论】:
以上是关于检查 MYSQL 表行中是不是存在特定时间范围的主要内容,如果未能解决你的问题,请参考以下文章