找到特定组中的最低值

时间:2014-04-15 18:05:07

标签: sql greatest-n-per-group

我的问题是:

我的数据库有3列,其条目如下:

1|Tom   |1
2|Lucy  |1
3|Frank |2
4|Jane  |3
5|Robert|3

现在我想要这样的输出:

1|Tom   |1
3|Frank |2
4|Jane  |3

这意味着在每个组(在本例中为第三列)中第一列的最低条目。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:4)

您需要的是具有分组的相关子查询。

一种易于遵循的方法是:

SELECT column1, name, column2
FROM MyTable as mt1
WHERE column1 in (SELECT Min(column1) FROM MyTable as mt2 GROUP BY column2)

但是更好,更清洁的方式:

SELECT column1, name, column2
FROM MyTable as mt1
INNER JOIN
(SELECT Min(column1) as minc1 FROM MyTable as mt2 GROUP BY column2) as mt2
ON mt1.column1=mt2.minc1;

SQLFiddle

注意:大多数DBMS都应支持这两种形式。