[杞琞瑙f瀽oracle鐨凴OWNUM — 浣滆: chen_liang
瀵逛簬rownum鏉ヨ瀹冩槸oracle绯荤粺椤哄簭鍒嗛厤涓轰粠鏌ヨ杩斿洖鐨勮鐨勭紪鍙凤紝杩斿洖鐨勭涓琛屽垎閰嶇殑鏄1锛岀浜岃鏄2锛屼緷姝ょ被鎺紝杩欎釜浼瓧娈靛彲浠ョ敤浜庨檺鍒舵煡璇㈣繑鍥炵殑鎬昏鏁帮紝鑰屼笖rownum涓嶈兘浠ヤ换浣曡〃鐨勫悕绉颁綔涓哄墠缂銆
涓句緥璇存槑锛
渚嬪琛細student(瀛︾敓)琛紝琛ㄧ粨鏋勪负锛
ID銆銆銆 char(6)銆銆銆銆銆 –瀛﹀彿
name銆銆銆銆VARCHAR2(10)銆銆銆–濮撳悕
-
CREATE TABLE student (ID char(6), name VARCHAR2(100));
-
INSERT INTO sale VALUES('200001',鈥樺紶涓鈥);
-
INSERT INTO sale VALUES('200002',鈥樼帇浜屸);
-
INSERT INTO sale VALUES('200003',鈥樻潕涓夆);
-
INSERT INTO sale VALUES('200004',鈥樿档鍥涒);
-
commit;
(1) rownum 瀵逛簬绛変簬鏌愬肩殑鏌ヨ鏉′欢
濡傛灉甯屾湜鎵惧埌瀛︾敓琛ㄤ腑绗竴鏉″鐢熺殑淇℃伅锛屽彲浠ヤ娇鐢╮ownum=1浣滀负鏉′欢銆備絾鏄兂鎵惧埌瀛︾敓琛ㄤ腑绗簩鏉″鐢熺殑淇℃伅锛屼娇鐢╮ownum=2缁撴灉鏌ヤ笉鍒版暟鎹傚洜涓簉ownum閮芥槸浠1寮濮嬶紝浣嗘槸1浠ヤ笂鐨勮嚜鐒舵暟鍦╮ownum鍋氱瓑浜庡垽鏂槸鏃惰涓洪兘鏄痜alse鏉′欢锛屾墍浠ユ棤娉曟煡鍒皉ownum = n锛坣 > 1鐨勮嚜鐒舵暟锛夈
-
SQL> SELECT rownum,id,name FROM student WHERE rownum=1;
-
(鍙互鐢ㄥ湪闄愬埗杩斿洖璁板綍鏉℃暟鐨勫湴鏂癸紝淇濊瘉涓嶅嚭閿欙紝濡傦細闅愬紡娓告爣)
杩斿洖:
ROWNUM ID NAME
———- —— —————————————————
1 200001 寮犱竴
-
SQL> SELECT rownum,id,name FROM student WHERE rownum =2;
杩斿洖:
ROWNUM ID NAME
———- —— —————————————————
锛2锛塺ownum瀵逛簬澶т簬鏌愬肩殑鏌ヨ鏉′欢
濡傛灉鎯虫壘鍒颁粠绗簩琛岃褰曚互鍚庣殑璁板綍锛屽綋浣跨敤rownum > 2鏄煡涓嶅嚭璁板綍鐨勶紝鍘熷洜鏄敱浜巖ownum鏄竴涓绘槸浠1寮濮嬬殑浼垪锛孫racle 璁や负rownum > n(n > 1鐨勮嚜鐒舵暟)杩欑鏉′欢渚濇棫涓嶆垚绔嬶紝鎵浠ユ煡涓嶅埌璁板綍
-
SQL> SELECT rownum,id,name FROM student WHERE rownum >2;
杩斿洖:
ROWNUM ID NAME
———- —— —————————————————
閭e浣曟墠鑳芥壘鍒扮浜岃浠ュ悗鐨勮褰曞憖銆傚彲浠ヤ娇鐢ㄤ互涓嬬殑瀛愭煡璇㈡柟娉曟潵瑙e喅銆傛敞鎰忓瓙鏌ヨ涓殑rownum蹇呴』瑕佹湁鍒悕锛屽惁鍒欒繕鏄笉浼氭煡鍑鸿褰曟潵锛岃繖鏄洜涓簉ownum涓嶆槸鏌愪釜琛ㄧ殑鍒楋紝濡傛灉涓嶈捣鍒悕鐨勮瘽锛屾棤娉曠煡閬搑ownum鏄瓙鏌ヨ鐨勫垪杩樻槸涓绘煡璇㈢殑鍒椼
-
SQL>select * FROM(SELECT rownum no ,id,name FROM student) WHERE no>2;
杩斿洖:
NO ID NAME
———- —— —————————————————
3 200003 鏉庝笁
4 200004 璧靛洓
-
SQL> SELECT * FROM(SELECT rownum,id,name FROM student)WHERE rownum > 2;
杩斿洖:
ROWNUM ID NAME
———- —— —————————————————
锛3锛塺ownum瀵逛簬灏忎簬鏌愬肩殑鏌ヨ鏉′欢
濡傛灉鎯虫壘鍒扮涓夋潯璁板綍浠ュ墠鐨勮褰曪紝褰撲娇鐢╮ownum < 3鏄兘寰楀埌涓ゆ潯璁板綍鐨勩傛樉鐒秗ownum瀵逛簬rownum 1鐨勮嚜鐒舵暟锛夌殑鏉′欢璁や负鏄垚绔嬬殑锛屾墍浠ュ彲浠ユ壘鍒拌褰曘
-
SQL> SELECT rownum,id,name FROM student WHERE rownum < 3;
杩斿洖:
ROWNUM ID NAME
———- —— —————————————————
1 200001 寮犱竴
2 200002 鐜嬩簩
缁间笂鍑犵鎯呭喌锛屽彲鑳芥湁鏃跺欓渶瑕佹煡璇ownum鍦ㄦ煇鍖洪棿鐨勬暟鎹紝閭f庝箞鍔炲憖浠庝笂鍙互鐪嬪嚭rownum瀵瑰皬浜庢煇鍊肩殑鏌ヨ鏉′欢鏄汉涓簍rue鐨勶紝rownum瀵逛簬澶т簬鏌愬肩殑鏌ヨ鏉′欢鐩存帴璁や负鏄痜alse鐨勶紝浣嗘槸鍙互闂存帴鐨勮瀹冭浆涓鸿涓烘槸true鐨勩傞偅灏卞繀椤讳娇鐢ㄥ瓙鏌ヨ銆備緥濡傝鏌ヨrownum鍦ㄧ浜岃鍒扮涓夎涔嬮棿鐨勬暟鎹紝鍖呮嫭绗簩琛屽拰绗笁琛屾暟鎹紝閭d箞鎴戜滑鍙兘鍐欎互涓嬭鍙ワ紝鍏堣瀹冭繑鍥炲皬浜庣瓑浜庝笁鐨勮褰曡锛岀劧鍚庡湪涓绘煡璇腑鍒ゆ柇鏂扮殑rownum鐨勫埆鍚嶅垪澶т簬绛変簬浜岀殑璁板綍琛屻備絾鏄繖鏍风殑鎿嶄綔浼氬湪澶ф暟鎹泦涓奖鍝嶉熷害.
-
SQL> SELECT * FROM
-
(SELECT rownum no,id,name FROM student WHERE rownum < =3 ) WHERE no > =2;
杩斿洖:
NO ID NAME
———- —— —————————————————
2 200002 鐜嬩簩
3 200003 鏉庝笁
锛4锛塺ownum鍜屾帓搴
Oracle涓殑rownum鐨勬槸鍦ㄥ彇鏁版嵁鐨勬椂鍊欎骇鐢熺殑搴忓彿锛屾墍浠ユ兂瀵规寚瀹氭帓搴忕殑鏁版嵁鍘绘寚瀹氱殑rowmun琛屾暟鎹氨蹇呴』娉ㄦ剰浜嗐
-
SQL> SELECT rownum ,id,name FROM student ORDER BY name;
杩斿洖:
ROWNUM ID NAME
———- —— —————————————————
3 200003 鏉庝笁
2 200002 鐜嬩簩
1 200001 寮犱竴
4 200004 璧靛洓
鍙互鐪嬪嚭锛宺ownum骞朵笉鏄寜鐓ame鍒楁潵鐢熸垚鐨勫簭鍙枫傜郴缁熸槸鎸夌収璁板綍鎻掑叆鏃剁殑椤哄簭缁欒褰曟帓鐨勫彿锛宺owid涔熸槸椤哄簭鍒嗛厤鐨勩備负浜嗚В鍐宠繖涓棶棰橈紝蹇呴』浣跨敤瀛愭煡璇
-
SQL> SELECT rownum ,id,name
-
FROM (SELECT * FROM student ORDER BY name);
杩斿洖:
ROWNUM ID NAME
———- —— —————————————————
1 200003 鏉庝笁
2 200002 鐜嬩簩
3 200001 寮犱竴
4 200004 璧靛洓
杩欐牱灏辨垚浜嗘寜name鎺掑簭锛屽苟涓旂敤rownum鏍囧嚭姝g‘搴忓彿锛堟湁灏忓埌澶э級
绗旇呭湪宸ヤ綔涓湁涓涓婄櫨涓囨潯璁板綍鐨勮〃锛屽湪jsp椤甸潰涓渶瀵硅琛ㄨ繘琛屽垎椤垫樉绀猴紝 渚胯冭檻鐢╮ownum鏉ヤ綔锛屼笅闈㈡槸鍏蜂綋鏂规硶(姣忛〉
鏄剧ず20鏉):
-
SQL> SELECT * FROM tabname WHERE rownum < 20 ORDER BY name
浣嗗嵈鍙戠幇oracle鍗翠笉鑳芥寜鑷繁鐨勬剰鎰挎潵鎵ц锛岃屾槸鍏堥殢渚
鍙20鏉¤褰曪紝鐒跺悗鍐 order by锛屽悗缁忓挩璇racle,璇磖ownum纭疄灏辫繖鏍凤紝鎯崇敤鐨勮瘽锛屽彧鑳界敤瀛愭煡璇 鏉ュ疄鐜板厛鎺掑簭锛屽悗
rownum锛屾柟娉曞涓:
-
SQL> SELECT * FROM (SELECT * FROM tabname ORDER BY name)
-
WHERE rownum < 20
浣嗚繖鏍蜂竴鏉ワ紝鏁堢巼浼氳緝浣庡緢澶氥
鍚庣粡绗旇呰瘯楠岋紝鍙渶鍦╫rder by 鐨勫瓧娈典笂鍔犱富閿垨绱㈠紩鍗冲彲璁﹐racle鍏堟寜 璇ュ瓧娈垫帓搴忥紝鐒跺悗鍐峳ownum,鏂规硶涓嶅彉
鍙栧緱鏌愬垪涓N澶х殑琛:
-
SQL> SELECT column_name FROM
-
(SELECT table_name.*,dense_rank() over (ORDER BY COLUMN DESC) rank FROM table_name)
-
WHERE rank = N;
鍋囧瑕佽繑鍥炲墠5鏉¤褰:
-
SQL> SELECT * FROM tablename WHERE rownum < 6;
-
(鎴栨槸rownum < = 5 鎴栨槸rownum != 6)
鍋囧瑕佽繑鍥炵5-9鏉¤褰:
-
SQL> SELECT * FROM tablename
-
WHERE 鈥
-
AND rownum < 10
-
minus
-
SELECT * FROM tablename WHERE 鈥 AND rownum > 5
-
ORDER BY name
閫夊嚭缁撴灉鍚庣敤name鎺掑簭鏄剧ず缁撴灉銆(鍏堥夊啀鎺掑簭)
娉ㄦ剰锛氬彧鑳界敤浠ヤ笂绗﹀彿( "< " ,"<=","!=")銆
-
SQL> SELECT * FROM tablename WHERE rownum != 10
-
-
杩斿洖鐨勬槸鍓嶏紮鏉¤褰曘
-
涓嶈兘鐢細">" ,">=" ,"=","Between...and"銆傜敱浜巖ownum鏄竴涓绘槸浠1寮濮嬬殑浼垪锛孫racle 璁や负杩欑鏉′欢 涓嶆垚绔嬶紝鏌ヤ笉鍒拌褰.
-
鍙﹀锛岃繖涓柟娉曟洿蹇:
-
<pre lang="sql">
-
SQL> SELECT * FROM (
-
SELECT rownum r,a FROM yourtable
-
WHERE rownum < = 20 ORDER BY name ) WHERE r > 10
杩欐牱鍙栧嚭绗11-20鏉¤褰!(鍏堥夊啀鎺掑簭鍐嶉)
瑕佸厛鎺掑簭鍐嶉夊垯椤荤敤select宓屽锛氬唴灞傛帓搴忓灞傞夈
rownum鏄殢鐫缁撴灉闆嗙敓鎴愮殑锛屼竴鏃︾敓鎴愶紝灏变笉浼氬彉鍖栦簡锛涘悓鏃,鐢熸垚鐨勭粨鏋滄槸渚濇閫掑姞鐨勶紝娌℃湁1灏辨案杩滀笉浼氭湁2!
rownum 鏄湪 鏌ヨ闆嗗悎浜х敓鐨勮繃绋嬩腑浜х敓鐨勪吉鍒楋紝骞朵笖濡傛灉where鏉′欢涓瓨鍦 rownum 鏉′欢鐨勮瘽锛屽垯:
1锛 鍋囧 鍒ゅ畾鏉′欢鏄父閲忥紝鍒欙細
鍙兘 rownum = 1, < = 澶т簬1 鐨勮嚜鐒舵暟锛 = 澶т簬1 鐨勬暟鏄病鏈夌粨鏋滅殑锛 澶т簬涓涓暟涔熸槸娌℃湁缁撴灉鐨
鍗 褰撳嚭鐜颁竴涓 rownum 涓嶆弧瓒虫潯浠剁殑鏃跺欏垯 鏌ヨ缁撴潫
2: 褰撳垽瀹氬间笉鏄父閲忕殑鏃跺
鑻ユ潯浠舵槸 = var , 鍒欏彧鏈夊綋 var 涓1 鐨勬椂鍊欐墠婊¤冻鏉′欢锛岃繖涓椂鍊欎笉瀛樺湪 stop key ,蹇呴』杩涜 full scan ,瀵规瘡涓弧瓒冲叾浠杦here鏉′欢鐨勬暟鎹繘琛屽垽瀹
閫夊嚭涓琛屽悗鎵嶈兘鍘婚塺ownum=2鐨勮鈥︹
Leave a Reply