这个问题在这里已经有答案了:
获得每组分组结果的前n个记录(11个答案)
使用groupby中的limit来获得每组n个结果(13个答案)
两年前关门了。
使用mysql 5.7。我有一个名为“数据点”的表,其中包含时间序列数据。有以下列:
数据点id
资产名称
数据点时间
数据点值
标签名称
它看起来像这样,但是继续几千行:
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
我希望能够为资产名称和标签名称的每个组合选择最后10个按时间顺序排列的记录。我已经确定下面的查询将为单个资产名称和标记名称组合提供所需的输出,但我正在寻找一种方法来获取所有资产名称和标记名称组合。
select * from data_points where tag_name = 'tag1' and asset_name = 'asset1' order by data_point_time desc limit 10;
从那里我将需要执行另一个选择,因为工会似乎不工作,以加入他们所有在一起。我怀疑这和 limit 10
.
我试图获得资产名称和标记名称的所有不同组合,如下所示:
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
应用于整个select,因此只返回10条记录。
暂无答案!
目前还没有任何答案,快来回答吧!