本人使用MySQL 5.7,子查询里面进行排序后再进行分组操作,取出的数据为最老的一条数据。换一个方法实现,使用substring_index函数和group_concat实现
select SUBSTRING_INDEX(group_concat(id order by `freeze_time` desc),',',1) as id from tab_machine_fields group by machine_id
获取对应分组后最新一条记录的id,之后在进行关联查询获取相关信息。
还有另外一种方式:
SELECT h.* from tbl_data_meter_h h INNER JOIN (
SELECT max(FREEZE_DATE) as fdate from tbl_data_meter_h GROUP BY FFM_ID) s
ON s.fdate = h.FREEZE_DATE GROUP BY FFM_ID ORDER BY FREEZE_DATE