我使用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
如何获得所需的输出?
在这种情况下,子查询应该可以正常工作。您可以尝试以下操作:
Select v1, v2, v3 from test a
where (select min(v2)
from test b
where a.v1 = b.v1) = v2;