oracle的區間查詢語句:1、“select * from 表名 where rownum <= 數值”語句,該語句查詢表中指定前幾條數據;2、“select * from 表名 where rownum <= 結束值 minus select * from 表名 where rownum < 起始值”語句,該語句查詢表中指定區間內的數據。
本教程操作環境:windows10系統、Oracle 12c版、Dell G3電腦。
oracle的區間查詢語句是什么
Oracle使?rownum的關鍵字來實現這種查詢:
?先我們假設有?個地域信息表area,其表結構如下圖所?:
表中的數據如下圖所?(select * from area語句得到的結果):
1)查詢表中的前8條記錄
select * from area where rownum <= 8
查詢結果如下:
2)查詢第2到第8條記錄
對于這種形式的查詢,oracle不像mysql那么?便,它必須使??查詢或者是集合操作來實現。我們可以使?以下3種?式可以實現:
A: select id,province,city,district from (select id,province,city,district,rownum as num from area) where num between 2 and 8;
?先根據select id,province,city,district,rownum as num from area得到?個臨時表,這個臨時表中有?個rownum列(?個偽列,類似與
rowid,但?不同于rowid,因為rowid是物理存在的?個列,也就是說Oracle中任何?個表都有?個rowid列,?rownum不是物理存在的),
然后在臨時表中來查詢。
B: select * from area where rownum <= 8 minus select * from area where rownum < 2;
使?集合減運算符minus,該操作返回在第?個select中出現?不在第?個select中出現的記錄。
C: select id,province,city,district from (select id,province,city,district,rownum as num from area) where num >=2 intersect
select * from area where rownum <= 8;
使?集合交運算符intersect,這?繞了?個彎(不過這個彎實現了rownum?于某個數的查詢),它是?先利?A的?式查詢得到所有
rownum?于2的記錄,然后再與rownum?于等于8的記錄集合做交運算。三種操作得到的結果?樣,如下圖所?:
推薦教程:《Oracle視頻教程》