我有下表:
ID | NUM
1 | 4
2 | 9
3 | 1
4 | 7
5 | 10
我想要一个结果:
ID | NUM
5 | 10
当我尝试使用 MAX(NUM) 时,我得到一个错误,我必须使用 GROUP BY 才能使用 MAX 函数
任何想法?
我有下表:
ID | NUM
1 | 4
2 | 9
3 | 1
4 | 7
5 | 10
我想要一个结果:
ID | NUM
5 | 10
当我尝试使用 MAX(NUM) 时,我得到一个错误,我必须使用 GROUP BY 才能使用 MAX 函数
任何想法?
根据错误,如果选择列表中有任何非聚合列(在您的情况下,您试图找到然后返回列中关联的值) ,则使用类似的聚合Max
需要一个子句。在 MS SQL Server 中,您可以通过排序和限制返回的行来获得所需的内容:Group By
MAX(Num)
ID
SELECT TOP 1 ID, NUM
FROM [table]
ORDER BY NUM DESC;
在其他 RDBMS 系统中,它LIMIT
提供了类似的功能。
编辑
如果您需要返回所有具有相同最大值的行,请使用WITH TIES
限定符:
SELECT TOP 1 WITH TIES ID, NUM
FROM [table]
ORDER BY NUM DESC;
可能返回超过 1 个结果:
SELECT id, num
FROM table
WHERE num = (SELECT MAX(num) FROM table)
试试这个查询。
WITH result AS
(
select DENSE_RANK() OVER( ORDER BY NUM desc) AS RowNo,ID,NUM from #emp
)
select ID,NUM from result where RowNo=1
即使它有更多的 MAX 值,它也会返回最大值,例如:
ID | NUM
5 | 10
6 | 10
请参阅以下链接以了解有关排名功能的更多信息:http:
//msdn.microsoft.com/en-us/library/ms189798
怎么样:
SELECT TOP 1 ID,NUM FROM table ORDER BY NUM DESC;
做这个 -
SELECT TOP 1 ID,
NUM
FROM <yourtable>
ORDER BY NUM DESC;
获取所有行都有最大值但有 3 个选择,这对性能不利
SELECT id, MAX(num) as num
FROM table
GROUP BY id
ORDER BY MAX(num) DESC
LIMIT (SELECT COUNT(*)
FROM table
WHERE num =(SELECT MAX(num) FROM table)
)