廣州總校區(qū)切換校區(qū)
復(fù)制成功
微信號(hào):togogoi
添加微信好友, 詳細(xì)了解課程
已復(fù)制成功,如果自動(dòng)跳轉(zhuǎn)微信失敗,請(qǐng)前往微信添加好友
打開(kāi)微信
圖片

行業(yè)新聞

數(shù)據(jù)庫(kù)返回表中的前N行記錄

發(fā)布時(shí)間: 2022-03-15

實(shí)際應(yīng)用環(huán)境中,用戶經(jīng)常需要獲取查詢的前N行記錄,或數(shù)據(jù)表的前N行。在MST-SQL中,定義了TOP N關(guān)鍵字來(lái)實(shí)現(xiàn),TOP參數(shù)的作用是用來(lái)限制返回到結(jié)果集中的記錄的數(shù)目,而Oracle PL/SQL不支持該關(guān)鍵字。

本實(shí)例對(duì)學(xué)生表STU進(jìn)行查詢,返回該表的前3行記錄,在SQL*Plus中執(zhí)行后,其返回結(jié)果如圖1所示。



圖1 返回表中的前N行記錄


【實(shí)現(xiàn)代碼】



【范例解析】

本實(shí)例中同樣使用了游標(biāo)ROWNUM來(lái)實(shí)現(xiàn)獲取表的前N行記錄。事實(shí)上,ROWNUM是對(duì)查詢結(jié)果集加的一個(gè)偽列,其需要先查詢到結(jié)果集。簡(jiǎn)單地說(shuō),ROWNUM是符合條件的結(jié)果集的序號(hào),其從1開(kāi)始。

需要讀者注意的是,ROWNUM的使用只能用<、<=和!=等比較運(yùn)算符,不能用>、>=等運(yùn)算符,這是因?yàn)镽OWNUM從自然數(shù)1開(kāi)始,Oracle認(rèn)為ROWNUM>n(n>1)這種條件是不成立的,因此使用>、>=等運(yùn)算符是無(wú)法返回?cái)?shù)據(jù)記錄的。同樣的,此處可以使用<=和!=運(yùn)算符對(duì)上述實(shí)現(xiàn)SQL語(yǔ)句進(jìn)行改寫(xiě):







事實(shí)上,Oracle中經(jīng)常使用ORDER BY子句與ROWNUM組合來(lái)實(shí)現(xiàn)獲取查詢的前N行記錄,即先用ORDER BY子句排序,再使用ROWNUM取出排在前面的N行記錄。

注意:ROWNUM從自然數(shù)1 開(kāi)始,因此條件“ROWNUM=1”是成立的,其可以作為WHERE子句的條件并返回表的第1行記錄,但“ROWNUM=n(n>1)”是不成立的,不能作為條件直接寫(xiě)在WHERE子句中,否則無(wú)法返回正確結(jié)果。

上一篇: 數(shù)據(jù)段是什么

下一篇: 數(shù)據(jù)庫(kù)根據(jù)查詢結(jié)果創(chuàng)建和復(fù)制表

<
在線咨詢 ×

您好,請(qǐng)問(wèn)有什么可以幫您?我們將竭誠(chéng)提供最優(yōu)質(zhì)服務(wù)!