mysql - 从同一查询的多个组中选择一行
问题描述
我有一个由以下内容组成的行集:
id1 id2 value
--------------------------------
1 1 50
2 1 60
3 1 70
4 1 40
5 1 53
15 2 10
16 2 19
17 2 17
18 2 13
20 2 14
40 3 32
40 3 34
44 3 54
40 3 67
43 3 80
从这个行集中,我希望每个 id2 组的 id1 值具有最大值。像这样的东西:
id1 id2 value
--------------------------------
3 1 70
16 2 19
43 3 80
我只关心 id1 和 id2,value 列仅用于说明目的。
查询必须在 MariaDB 5.5 上运行。我一直在考虑这个,但还没有找到一个下降(和高性能......)SQL查询。
有什么建议么?
解决方案
SELECT t.*
FROM sometable t
INNER JOIN (
SELECT
id2,
MAX(`value`) val
FROM sometable
GROUP BY id2
) t2
ON t.`value` = t2.val
AND t.id2 = t2.id2
推荐阅读
- php - 将密钥文件添加到 PHP cURL 身份验证
- python - 混合比较两个数据框中的多个列并使用 python 添加一个新列 | 熊猫
- css - 使用带有 withStyles 和材质 ui 的通用类
- java - Apache Storm Kafka Spout 延迟问题
- c - 从C中的地址访问值
- qt - QML中的GridLayout如何在单元格中约束矩形
- google-maps - 谷歌通过一个 API 调用反向地理编码多个坐标?
- python - SKLearn KMeans 收敛警告
- text - Libgdx Android 中的 3D 浮动文本
- scala - 乔达日期时间。如何将时区设置为解析的 DateTime?