GROUP BY 语句根据一个或多个列对结果集进行分组。会把值相同放到一个组中,最终查询出的结果只会显示组中一条记录。
现有表结构如下:
需要将数据通过采集时间中的日期(collecttime)以及设备(devnum)进行分组查询,并得到每条数据中的详细信息。使用GROUP_CONCAT函数实现。
1、GROUP_CONCAT功能:将group by产生的同一个分组中的值连接起来,返回一个字符串结果。
2、语法:group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator ‘分隔符’] )
说明:通过使用distinct可以排除重复值;如果希望对结果中的值进行排序,可以使用order by子句;separator是一个字符串值,缺省为一个逗号。
现执行如下sql语句:
select GROUP_CONCAT(collecttime),date_format(collecttime,'%Y-%m-%d'),GROUP_CONCAT(devnum),GROUP_CONCAT(`value`),GROUP_CONCAT(`state`) from speed_hisdata group by date_format(collecttime,'%Y-%m-%d'),devnum;
得到效果如下: