【发布时间】:2020-04-16 20:21:58
【问题描述】:
拥有这个数据集:
CREATE TABLE IF NOT EXISTS `details` (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`item` INT(6) NOT NULL,
`dateOut` DATE,
`dateIN` DATE
);
INSERT INTO details VALUES
(1,1, '2020.04.11', '2020.04.11'),
(2,1, '2020.04.12', '2020.04.12'),
(3,1, '2020.04.13', '2020.03.11'),
(4,1, '2020.04.13', '2020.04.13'),
(5,1, '2020.04.14', '2020.03.11');
fiddle。 是否有可能在 mysql/php(laravel) 中得到这个结果:
2020-04-11 => [id: 1,3,5]
2020.04.12 => [id: 2]
2020.04.13 => [id: 4]
意思是dateIN <= min(dateOut) 将值分组,然后与剩余的值(从集合中删除第一组)重复。
所以第一次 min(dateOut) 是2020-04-11。 ID:1,3,5 有 dateIn 2020-04-11 所以我将它们分组。从初始集合中删除 id 1,3,5。
那么在剩余的值上 min(dateOut) 是 2020-04-12 并且只有 Id: 2 有 dateIn 2020-04-12。删除 id 2。
那么在剩余的值上 min(dateOut) 是 2020-04-13 并且只有 Id: 4 有 dateIn 2020-04-13。移除 id 4 等等,直到所有值都被分组。
【问题讨论】: