Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在同一查询中从多个组中选择一行_Mysql_Sql - Fatal编程技术网

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)
上建立索引