我必須獲取蟾蜍的表中第一行和最後一行。 我用下面的查詢從蟾蜍的表中獲取拉斯特羅
select * from grade_master where rownum=(select max(rownum) from grade_master)
select * from grade_master where rownum=1
第二查詢工作來獲取第一行。但第一個不行。任何人都請幫助我。
在此先感謝
我必須獲取蟾蜍的表中第一行和最後一行。 我用下面的查詢從蟾蜍的表中獲取拉斯特羅
select * from grade_master where rownum=(select max(rownum) from grade_master)
select * from grade_master where rownum=1
第二查詢工作來獲取第一行。但第一個不行。任何人都請幫助我。
在此先感謝
在oracle中,數據不會被排序,直到您指定您的sql語句中的順序。
所以,當你這樣做:
select * from grade_master
甲骨文將給行,無論如何也想希望。
OTOH如果你
select * from grade_master order by id desc
那麼甲骨文將放棄由ID降回命令行。
因此,要獲得最後一排,你可以這樣做:
select *
from (select * from grade_master order by id desc)
where rownum = 1
的ROWNUM確定之前,「排序依據」條款進行評估,所以這是什麼查詢正在做的是訂貨下降的行(裏面查詢),然後將此有序集合賦予外部查詢。外部獲取集合的第一行然後返回它。
謝謝你的大腦。這很好 – Belinda
這樣的要求是有道理的,如果你指定結果的排序順序 - 有在數據庫中沒有這樣的事情「第一」,如果不指定排序順序「最後」行。
SQL> with t as (
2 select 'X' a, 1 b from dual union all
3 select 'C' , 2 from dual union all
4 select 'A' a, 3 b from dual
5 )
6 select a, b, decode(rn, 1, 'First','Last')
7 from (
8 select a, b, row_number() over(order by a) rn,
9 count(*) over() cn
10 from t
11 )
12 where rn in (1, cn)
13 order by rn
14/
A B DECOD
- ---------- -----
A 3 First
X 1 Last
你是如何定義一行作爲第一個還是最後一個?行可以是第一個或基於某些升序,降序或散列的順序。 – San