如何从oracle表的列中找到最大值?

时间:2017-08-03 02:59:40

标签: sql database oracle

我正在尝试从oracle数据库中的表student的列id中找到最大值。下面给出的查询工作正常,直到id <= 9。 例如 表数据

id
--
3
6
9
10

sql> select id from (select * from Student order by id desc)Student where rownum<=1 order by id desc;

id
--
9

但是虽然记录中存在id = 10但它仍然给我id = 9作为最大值。 例如 表数据

composer update

请帮忙。

1 个答案:

答案 0 :(得分:3)

您无法获得最大值的原因很简单。您的id列可能不是number类型,而是char类型。如果order by oracle对char进行不同的输入,则'10'的第一个字符'1''9'的第一个字符'9'进行比较{ {1}}所以'9'仍然是最大值。

要解决此问题,您应该确保id是号码:

select id 
from (select * from Student order by TO_NUMBER(id) desc)Student 
where rownum<=1 order by TO_NUMBER(id) desc;

但您也可以使用此查询:

select max(TO_NUMBER(id)) from student;