场景: 数据库有有两个字段.开始时间,和结束时间,指定一个时间段(a,b),a表示开始时间,b表示结束时间。看数据库中有没有与(a,b)存在交集的时间段,有的话就返回那条记录。
分情形讨论 SQL:
SELECT * FROM test_table WHERE
(startTime >= a AND startTime <= b)
OR (startTime <= a AND endTime >= b)
OR (endTime >= a AND endTime <= b)
优化的SQL:
SELECT * FROM test_table WHERE
startTime < b AND endTime > a