我有下表:
ID | NUM
1 | 4
2 | 9
3 | 1
4 | 7
5 | 10
Run Code Online (Sandbox Code Playgroud)
我想要一个结果:
ID | NUM
5 | 10
Run Code Online (Sandbox Code Playgroud)
当我尝试使用MAX(NUM)时,我得到错误,我必须使用GROUP BY才能使用MAX函数
任何的想法?
Stu*_*tLC 11
根据错误,如果选择列表中存在任何非聚合列,则使用类似聚合Max
需要一个Group By
子句(在您的情况下,您尝试查找MAX(Num)
然后返回ID
列中关联的值).在MS SQL Server中,您可以通过排序获取所需内容并限制返回的行:
SELECT TOP 1 ID, NUM
FROM [table]
ORDER BY NUM DESC;
Run Code Online (Sandbox Code Playgroud)
在其他RDBMS系统中,LIMIT
提供类似的功能.
编辑
如果需要返回具有相同最大值的所有行,请使用WITH TIES
限定条件:
SELECT TOP 1 WITH TIES ID, NUM
FROM [table]
ORDER BY NUM DESC;
Run Code Online (Sandbox Code Playgroud)
可能返回 1 个以上的结果:
SELECT id, num
FROM table
WHERE num = (SELECT MAX(num) FROM table)
Run Code Online (Sandbox Code Playgroud)
小智 5
试试这个查询。
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
Run Code Online (Sandbox Code Playgroud)
即使它有更多的 MAX 值,它也会返回最大值,例如:
ID | NUM
5 | 10
6 | 10
Run Code Online (Sandbox Code Playgroud)
请参阅以下链接以了解有关排名功能的更多信息:http :
//msdn.microsoft.com/en-us/library/ms189798
归档时间: |
|
查看次数: |
34392 次 |
最近记录: |