sql - 不带分组依据的 MAX 函数

标签 sql sql-server

我有下表:

ID | NUM
 1 |  4
 2 |  9
 3 |  1
 4 |  7
 5 |  10

我想要的结果是:

ID | NUM
 5 | 10

当我尝试使用 MAX(NUM) 时,我收到错误消息,我必须使用 GROUP BY 才能使用 MAX 函数

有什么想法吗?

最佳答案

根据错误,如果选择列表中有任何非聚合列(在您的情况下,您正在尝试查找 MAX(Num),然后返回 ID 列中关联的值)。在 MS SQL Server 中,您可以通过排序和限制返回的行来获得您想要的内容:

SELECT TOP 1 ID, NUM 
FROM [table] 
ORDER BY NUM DESC;

在其他 RDBMS 系统中,LIMIT 提供类似的功能。

编辑

如果您需要返回具有相同最大值的所有行,请使用 WITH TIES qualification :

SELECT TOP 1 WITH TIES ID, NUM 
FROM [table] 
ORDER BY NUM DESC;

关于sql - 不带分组依据的 MAX 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11073321/

相关文章:

sql - SQL Server 如何处理 View 后面表上的索引?

.net - 如何在 SQL Server 中以编程方式创建数据库?

sql - 将 3 个查询连接为单个表/ View

尝试获取 MySQL 查询结果时出现 PHP "Call to undefined method"错误

mysql - ISNULL 如果一列或两列为空则为 0

sql - Varchar 变量在 WHERE 子句中不起作用

sql - 是否有一种好的 SQL 方法来汇总以日期范围 block 作为输入的表?

c# - DataAdapter:更新无法找到 TableMapping ['Table' ] 或 DataTable 'Table'

PHP7 PDO_DBLIB 唯一标识符

c# - 参数 '@id' ,向数据库插入数据时未提供该参数