找到最大的单个号码

时间:2017-09-11 17:57:47

标签: mysql sql

我有一张表number,如下所示:

num
---
8
8
3
3
1
6
4

我想找出只出现一次的最大数字。我有这个问题:

select max(num) from number group by num having count(*)=1

它返回:

{"headers": ["max(num)"], "values": [[1], [4], [6]]}

这背后的原因是什么?

3 个答案:

答案 0 :(得分:2)

使用

 select max(num) from number group by num having count(*)=1

您正在使用group by num,因此group by num的max(num)与num

相同

所以你得到每个数字(*)= 1

如果你需要最大值,你应该使用

select max(num) from
( select num
from number 
group by num
having count(*) = 1   ) t

答案 1 :(得分:1)

max()子句确定的聚合函数(例如group by)将应用于每个组。由于您按数值对数字进行分组,因此查询会在每个组中找到最大值,这恰好是相同的数字。

要解决此问题,您可以使用子查询,或以降序排序,同时将行数限制为1。

答案 2 :(得分:1)

你可以这样做:

SELECT TOP 1 MAX(num)
FROM   number
GROUP BY num 
HAVING COUNT(num) = 1
ORDER BY num DESC

我希望我有所帮助。