3
我需要一些合併重疊間隔的幫助。與MySQL合併間隔
我有這個表:
id start end 1 15:30:00 16:20:00 2 10:00:00 13:00:00 3 15:00:00 16:09:00 4 11:00:00 14:00:00 5 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 end 2 10:00:00 14:00:00 3 15:00:00 16:30:00
只有開始和結束時間事; ID列基本可以忽略。
PHP https://stackoverflow.com/a/4347215/1085872也有類似的實現(直到第2步),但我只需要實現與MySQL的合併。
請注意,應該合併的一些範圍(例如本例中的ID 3和5)本身不會重疊。要合併它們,您需要傳遞關閉「重疊」關係。在SQL中計算閉包通常是不可能的。爲什麼限制SQL解決方案? – outis
同意,使用編程語言計算間隔更容易。 – ajreal
找到了SQL解決方案,它是最好的答案在http://stackoverflow.com/questions/8451925/merging-intervals-in-one-pass-in-sql – servermanfail