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