2017-08-03 58 views
-2

我想從oracle數據庫中的表學生的列id中找到最大值。下面給出的查詢工作正常,直到ID < = 9。 用於如 表數據如何從oracle表中找到最大值?

id 
-- 
3 
6 
9 

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最大值。 用於如 表數據

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 

請幫助。

+0

使用最多的功能 – Anil

回答

3

你無法獲得最大值的原因很簡單。您的id列可能不是number類型,而是char類型。當你做order by oracle對待char類型不同時,它需要第一個字符'10'這就是'1''9'的第一個字符所以'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; 
相關問題