Mysql 在同一查询中从多个组中选择一行
我有一个由以下内容组成的行集:Mysql 在同一查询中从多个组中选择一行,mysql,sql,Mysql,Sql,我有一个由以下内容组成的行集: id1 id2 value -------------------------------- 1 1 50 2 1 60 3 1 70 4 1 40 5 1 53 15
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
id1 id2 value
--------------------------------
3 1 70
16 2 19
43 3 80
从该行集中,我希望每个id2组的id1值具有最大值。大概是这样的:
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
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
select t.*
from t
where t.value = (select max(t2.value)
from t t2
where t2.id2 = t.id2
);
为了提高性能,您需要在
(id2,value)
上建立索引,这时会想到一个相关的子查询:
select t.*
from t
where t.value = (select max(t2.value)
from t t2
where t2.id2 = t.id2
);
为了提高性能,您需要在(id2,value)
上建立索引