gpt4 book ai didi

MySQL - 排除冲突的日期范围

转载 作者:行者123 更新时间:2023-11-29 13:09:45 24 4
gpt4 key购买 nike

想象一下这个日期范围列表

> SELECT * FROM range_table;
+----+------------+------------+
| id | start | end |
+----+------------+------------+
| 1 | 2014-01-01 | 2014-01-15 | /* -- Not conflicting */
| 2 | 2014-01-15 | 2014-01-16 | /* -- Conflicting */
| 3 | 2014-01-15 | 2014-01-20 | /* | */
| 4 | 2014-01-15 | 2014-01-19 | /* / */
| 5 | 2014-01-24 | 2014-01-26 | /* -- Conflicting */
| 6 | 2014-01-21 | 2014-01-25 | /* / */
+----+------------+------------+

我正在尝试删除冲突范围并仅保留每个冲突集的第一次出现。

这是我最后应该得到的:

+----+------------+------------+
| id | start | end |
+----+------------+------------+
| 1 | 2014-01-01 | 2014-01-15 |
| 2 | 2014-01-15 | 2014-01-16 |
| 5 | 2014-01-24 | 2014-01-26 |
+----+------------+------------+

这是fiddle

最佳答案

SELECT x.*
FROM range_table x
LEFT
JOIN range_table y
ON y.start < x.end
AND y.end > x.start
AND y.id < x.id
WHERE y.id IS NULL;

http://sqlfiddle.com/#!2/6f723/26

查询已修改以适应明显修改的摘要

关于MySQL - 排除冲突的日期范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22250526/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com