Mysql 在SQL中查找一个变量的最小值和其他变量的匹配值

Mysql 在SQL中查找一个变量的最小值和其他变量的匹配值,mysql,sql,greatest-n-per-group,Mysql,Sql,Greatest N Per Group,我在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

我在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;

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

Select v1, v2, v3 from test a
where (select min(v2)
from test b
where a.v1 = b.v1) = v2;

如果按v1和v3分组,会出现什么问题?不,我在添加v3后只得到一行,但感谢您的尝试。如果按v1和v3分组,会出现什么问题?不,我在添加v3后只得到一行,但感谢您的尝试。谢谢,尽管我不明白在“a”中的行数尚未确定时子查询如何使用“a”表。谢谢,虽然我不明白在“a”中的行数尚未确定时,子查询如何使用“a”表。