假设我有下表,如何编写SQL查询以查找一组结果,这些结果是每个b的最小c?例如,我想要(7,45)和(16,69)用于下表。
a | b | c
-----+--------+----
3 | 7 | 53
2 | 7 | 49
1 | 7 | 45
5 | 7 | 61
13 | 16 | 69
15 | 16 | 77
6 | 7 | 65
4 | 7 | 57
14 | 16 | 73
答案 0 :(得分:3)
只需使用GROUP BY
:
SELECT b, MIN(c)
FROM yourTable
GROUP BY b
答案 1 :(得分:1)
您可以使用Postgres中的distinct on
执行此操作:
select distinct on (b) b, c
from t
order by b, c asc;
另一种选择是group by
:
select b, min(c)
from t
group by b;
你可以试试两者,看看哪个更快。