查询中的SQL MIN函数 - 3列Access

时间:2018-05-17 15:35:06

标签: sql min

我尝试使用min函数但是当我尝试查看3列时它无法正常工作。 我有这张桌子

TABLE

在Field_2上使用MIN()函数,我想得到这个输出

EXPECTED OUTPUT

我的查询是

SELECT FIELD_1, MIN(FIELD_2) FROM TABLE GROUP BY FIELD_1

如果我添加列ID,我会得到所有相同的表。

2 个答案:

答案 0 :(得分:1)

使用subquery代替

select * 
from table t
where field_2 = (select min(field_2) from table where field_1 = t.field_1);

但是,您也可以使用LIMIT子句

select * 
from table t
where id = (select id
           from table 
           where field_1 = t.field_1
           order by field_2 asc
           LIMIT 1);

但是,某些 DBMS 没有LIMIT条款(SQL Srver)所以,请使用TOP代替:

. . . 
where id = (select top (1) id
            from table 
            where field_1 = t.field_1
            order by field_2 asc);

答案 1 :(得分:1)

你真的不想聚合。您想要过滤行。为此,我经常使用相关的子查询:

select t.*
from t
where t.field2 = (select min(t2.field2) from t t2 where t2.field_1 = t.field_1);

当满足以下两个条件时,聚合最合适:

  • group by子句指定所需的行。 group by个密钥的每个组合都会生成一行。
  • 所有其他列将多行的值合并为一个值。

在你的情况下,第二个条件不是真的。您需要特定行中的所有列。