首页 > 解决方案 > 通过MySQL表中的数据查询获取组的最新数据

问题描述

我有一个 SQL 表,我试图在其中提取每个类别的最新数据。

我的表架构

| deviceId                    | varchar(30) | NO   |     | NULL    |       |
| rssi                        | varchar(15) | YES  |     | NULL    |       |
| space_temperature           | varchar(30) | YES  |     | NULL    |       |
| control                     | varchar(30) | YES  |     | NULL    |       |
| counter                     | varchar(30) | YES  |     | NULL    |       |
| timestamp                   | varchar(30) | NO   |     | NULL    |       |
| date                        | varchar(30) | NO   |     | NULL    |       |
| floor                       | varchar(30) | YES  |     | NULL    |       |
| Id                          | varchar(5)  | YES  |     | NULL    |       |

我想获取每个 ID 的最新行。

select * from Data where floor = 'L2' and date = '2019-12-10' group by Id; 

这给了我每个 ID 的一行,但它给了我第一个条目,而不是表中的最新条目。

我试过了

select *,max(timestamp) as latest_timestamp from Data where floor = 'L2' and date = '2019-12-10' group by Id; 

这给出了最新的时间戳,但其他列具有第一个条目的数据。如何获取每个 Id 组的最新条目的结果?

标签: mysqlsqlgroup-byaggregate

解决方案


您可以尝试以下方式 -

select * from Data a where floor = 'L2' and date = '2019-12-10'
and timestamp =(select max(timestamp) from data b where a.id=b.id)

推荐阅读