我正在尝试GROUP BY
相同的记录,但时间戳
或日期时间
。
与首次进入时差仅3分钟左右。
示例:
这就是数据库表的样子。
*-------------------------------------------*
| id | name | time |
| 1 | Lei | 2018-02-21 12:00:10 |
| 2 | Lei | 2018-02-21 12:01:11 |
| 3 | Lei | 2018-02-21 12:01:15 |
| 4 | Lei | 2018-02-21 12:01:16 |
| 5 | Anna | 2018-02-21 12:03:11 |
| 6 | Anna | 2018-02-21 12:03:13 |
| 7 | Bell | 2018-02-21 12:05:01 |
| 8 | Lei | 2018-02-21 12:10:00 |
*-------------------------------------------*
我想要获取 Lei 从她的第一个 timestamp
或 datetime
记录开始的 12:00:10 至 3 分钟内的条目。
所以输出会是这样的。
*-------------------------------------------*
| id | name | time |
| 1 | Lei | 2018-02-21 12:00:10 |
| 5 | Anna | 2018-02-21 12:03:11 |
| 7 | Bell | 2018-02-21 12:05:01 |
| 8 | Lei | 2018-02-21 12:10:00 |
*-------------------------------------------*
我将很高兴感谢您的帮助,无论是 mysql 还是 php。
最佳答案
MySQL 5.6 架构设置:
CREATE TABLE Table1
(`id` int, `name` varchar(4), `time` datetime)
;
INSERT INTO Table1
(`id`, `name`, `time`)
VALUES
(1, 'Lei', '2018-02-21 12:00:10'),
(2, 'Lei', '2018-02-21 12:01:11'),
(3, 'Lei', '2018-02-21 12:01:15'),
(4, 'Lei', '2018-02-21 12:01:16'),
(5, 'Anna', '2018-02-21 12:03:11'),
(6, 'Anna', '2018-02-21 12:03:13'),
(7, 'Bell', '2018-02-21 12:05:01')
;
查询 1:
select id, name, min(time) as time
from Table1
group by name
order by time
<强> Results :
| id | name | time |
|----|------|----------------------|
| 1 | Lei | 2018-02-21T12:00:10Z |
| 5 | Anna | 2018-02-21T12:03:11Z |
| 7 | Bell | 2018-02-21T12:05:01Z |
或者如果你想按间隔 3 分钟进行分组,你可以这样做
select id, name, min(time) as time
from Table1
group by name, UNIX_TIMESTAMP(time) DIV 180
order by time
;
关于mysql - GROUP BY 相同记录但不同 TIMESTAMP/DATETIME,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48897107/