首页 > 解决方案 > 从同一查询的多个组中选择一行

问题描述

我有一个由以下内容组成的行集:

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查询。

有什么建议么?

标签: mysqlsql

解决方案


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

推荐阅读