我尝试使用min函数但是当我尝试查看3列时它无法正常工作。 我有这张桌子
在Field_2上使用MIN()函数,我想得到这个输出
我的查询是
SELECT FIELD_1, MIN(FIELD_2) FROM TABLE GROUP BY FIELD_1
如果我添加列ID,我会得到所有相同的表。
答案 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
个密钥的每个组合都会生成一行。在你的情况下,第二个条件不是真的。您需要特定行中的所有列。