在SQL中找到一个变量的最小值,并与其他变量的值匹配

问题描述 投票:0回答:1

我使用MySQL中的以下命令创建测试数据集:

CREATE TABLE test
   (v1 INT,
   v2 INT,
   v3 INT);

INSERT INTO test (v1,v2,v3) VALUES(1,3,300);
INSERT INTO test (v1,v2,v3) VALUES(1,2,200);
INSERT INTO test (v1,v2,v3) VALUES(1,1,100);
INSERT INTO test (v1,v2,v3) VALUES(2,9,900);
INSERT INTO test (v1,v2,v3) VALUES(2,7,700);
INSERT INTO test (v1,v2,v3) VALUES(2,5,500);

我想在按v1分组时找到v2的最小值,并显示与v2的最小值匹配的v3的值。换句话说:

v1 v2 v3
1  1  100
2  5  500

当我运行以下命令时:

SELECT v1,MIN(v2),v3 FROM test
    GROUP BY v1;

我得到:

v1 v2 v3
1  1  300
2  5  900

如何获得所需的输出?

mysql sql greatest-n-per-group
1个回答
4
投票

在这种情况下,子查询应该可以正常工作。您可以尝试以下操作:

Select v1, v2, v3 from test a
where (select min(v2)
from test b
where a.v1 = b.v1) = v2;
© www.soinside.com 2019 - 2024. All rights reserved.