使用MySQL 5.7。我有一个名为' data_points'包含时间序列数据。有以下列:
它看起来像这样,但持续了几千行:
data_point_id asset_name data_point_time data_point_value tag_name
1 asset1 6/12/2018 1:30 40 tag1
2 asset2 6/11/2018 22:18 60 tag2
3 asset3 6/11/2018 19:06 75 tag3
4 asset2 6/11/2018 15:54 10 tag1
5 asset5 6/11/2018 12:42 300 tag2
我希望能够为asset_name和tag_name的每个组合选择最后10个时间顺序记录。我已经确定以下查询为我提供了我想要的单数asset_name和tag_name组合的输出,但我正在寻找获取所有asset_name和tag_name组合的方法。
select * from data_points where tag_name = 'tag1' and asset_name = 'asset1' order by data_point_time desc limit 10;
从那里我需要执行另一个选择,因为工会似乎无法将它们连接在一起。我怀疑这与limit 10
有关。
我尝试获取asset_name和tag_name的所有不同组合,如下所示:
select * from data_points where tag_name in (select distinct concat(asset_name, tag_name) from data_points) order by data_point_time desc limit 10;
由于几个原因,这不起作用,但对我来说最明显的是limit 10
适用于整个选择,因此只返回10条记录。