gpt4 book ai didi

mysql - 与 MySQL 合并间隔

转载 作者:可可西里 更新时间:2023-11-01 07:45:42 24 4
gpt4 key购买 nike

我需要一些帮助来合并重叠间隔。

我有这张表:

id  start       end1   15:30:00    16:20:002   10:00:00    13:00:003   15:00:00    16:09:004   11:00:00    14:00:005   16:20:00    16:30:00

SQL:

CREATE TABLE `intervals` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`start` time NOT NULL,
`end` time NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

INSERT INTO `intervals` (`start`, `end`) VALUES
('15:30:00', '16:20:00'),
('10:00:00', '13:00:00'),
('15:00:00', '16:09:00'),
('11:00:00', '14:00:00'),
('16:20:00', '16:30:00');

我想要这样的输出:

id  start       end2   10:00:00    14:00:003   15:00:00    16:30:00

只有开始和结束时间很重要; ID 列基本上可以忽略。

PHP 有类似的实现 https://stackoverflow.com/a/4347215/1085872 (直到第 2 步)但我需要只与 MySQL 实现合并。

最佳答案

试试这个 -

SELECT MIN(i.start) start, MAX(i.end) end FROM
(
SELECT @a:=@a + 1 a, t1.start, GREATEST(t1.end, t2.end) AS end
FROM (SELECT @a := 0) t, intervals t1
JOIN intervals t2 ON t1.id <> t2.id and t1.start >= t2.start and t1.start < t2.end
) p
JOIN intervals i
ON (i.start BETWEEN p.start AND p.end) OR (i.end BETWEEN p.start AND p.end)
GROUP BY p.a;

+----------+----------+
| start | end |
+----------+----------+
| 10:00:00 | 14:00:00 |
| 15:00:00 | 16:30:00 |
+----------+----------+

查询是基于这个解决方案- http://www.artfulsoftware.com/infotree/queries.php#807

在您的数据上测试它。

关于mysql - 与 MySQL 合并间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8417676/

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