[英]Mysql group first last row
我有一个这样的数据库表:
id date value minute
1 20100201 00:00:01.909 xxx 0
2 20100201 00:00:02.408 xxx 0
3 20100201 00:01:02.412 xxx 1
4 20100201 00:01:02.909 xxx 1
5 20100201 00:01:02.921 xxx 1
6 20100201 00:01:02.955 xxx 1
7 20100201 00:02:01.903 xxx 2
8 20100201 00:02:25.332 xxx 2
9 20100201 00:03:12.003 xxx 3
10 20100201 00:04:12.003 xxx 4
...
我希望结果是:
id date value1 minute
1 20100201 00:00:01.909 xxx 0
2 20100201 00:00:02.408 xxx 0
3 20100201 00:01:02.412 xxx 1
6 20100201 00:01:02.955 xxx 1
7 20100201 00:02:01.903 xxx 2
8 20100201 00:02:25.332 xxx 2
9 20100201 00:03:12.003 xxx 3
我想查询它,并返回每分钟的第一个和最后一个数字以及每分钟1条记录(如果只有1个存在的话)的ID(因此上面的ID 1,2,3,6,7,8,9)。
我试过使用按ID ASC排序的分组方式-按分钟分组,但似乎在分组后进行排序,所以这行不通。
任何人有任何想法吗? 我简直不敢相信!
试试这个查询-
SELECT t1.* FROM test_table t1
JOIN (
SELECT MIN(id) min_id, MAX(id) max_id FROM test_table
GROUP BY TIME_TO_SEC(TIME(date)) DIV 60) t2
ON t1.id = t2.min_id OR t1.id = t2.max_id
如果date
字段不是DATETIME或TIMESTAMP,则应修改GROUP BY。 另外,我建议您按确切的分钟分组(例如-按年份,day_of_year,minute_of_day分组)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.