sql - 查找特定组中的最低值

标签 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

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

有人可以帮忙吗?

最佳答案

您需要的是带有分组依据的相关子查询。

一种易于遵循的方法是:

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 应该支持这两种形式。

关于sql - 查找特定组中的最低值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23091177/

相关文章:

mysql - SQL 仅选择列上具有最大值的行

sql - 选择表中元组的最大值

mysql - 找不到mySQL请求错误

android - SQLite 中 LEAD 和 LAG 的替代品

android - 是否可以在 ImageView 中获取图像的图像路径?

mysql - 返回 MySQL 中组中的最大数字

sql - 在 PostgreSQL 中使用 group by 时如何获取最后一条记录

mysql - 使用 mysqldump 时跳过或忽略临时表

mysql - SQL - 理解 'JOIN' 语法、顺序

sql - 选择每个 GROUP BY 组中的第一行