繁体   English   中英

Mysql组第一行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM