oracle怎么查看前十條記錄,oracle查詢前十條記錄

Oracle查詢前幾條數(shù)據(jù)的方法

由于Oracle不支持select top 語句,所以在Oracle中經(jīng)常是用order by 跟rownum 的組合來實現(xiàn)select top n的查詢。 簡單地說,實現(xiàn)方法如下所示: select 列名1 ...列名n from(select 列名1 ...列名n from 表名 order by 列名1)where rownum =N(抽出記錄數(shù)) order by rownum asc 如:select id,name from (select id,name from student order by name) where rownum=10 order by rownum asc 按姓名排序取出前十條數(shù)據(jù) 附:取100-150條數(shù)據(jù)的方法1. 最佳選擇:利用分析函數(shù) row_number() over ( partition by col1 order by col2 )比如想取出100-150條記錄,按照tname排序 select tname,tabtype from ( select tname,tabtype,row_number() over ( order by tname ) rn from tab ) where rn between 100 and 150; 2. 使用rownum 虛列 select tname,tabtype from ( select tname,tabtype,rownum rn from tab

創(chuàng)新互聯(lián)建站長期為上千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為金溪企業(yè)提供專業(yè)的網(wǎng)站設(shè)計、做網(wǎng)站,金溪網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

在Oracle中怎樣查詢前10條記錄?

下面是關(guān)于rownum的介紹

================================

rownum和row_number()

over()的使用

rownum是oracle從8開始提供的一個偽列,是把sql出來的結(jié)果進(jìn)行編號,始終從1開始,常見的用途就是用來分頁輸出.

比如select

*from

torderdetail

a

where

rownum

=

10

這條語句就是輸出前10條紀(jì)錄,在這里用途上類似于sql

sever的top,不過rownum對于指定編號區(qū)間的輸出應(yīng)該說更強大select

*from

(select

a.*,

rownum

rn

from

torderdetail

a)

where

rn

=

10

and

rn

=

20

這條語句即是輸出第10到第20條紀(jì)錄,這里之所以用rownum

rn,是把rownum轉(zhuǎn)成實例,因為rownum本身只能用

=的比較方式,只有轉(zhuǎn)成實列,這樣就可做

=的比較了。

在實際用途中,常常會要求取最近的幾條紀(jì)錄,這就需要先對紀(jì)錄進(jìn)行排序后再取rownum

=一般常見的select

*from

(select

a.*

from

torderdetail

a

order

by

order_date

desc)

where

rownum

=

10

而在csdn曾經(jīng)發(fā)生過討論,關(guān)于取近的10條紀(jì)錄,有人給出這樣的語句select

a.*

from

torderdetail

a

where

rownum

=

10

order

by

order_date

desc

之所以會出現(xiàn)這樣的語句,主要是從效率上的考慮,前面條語句,是要進(jìn)行全表掃描后再排序,然后再取10條紀(jì)錄,后一條語句則不會全表掃描,只會取出10條紀(jì)錄,很明顯后條語句的效率會高許多。

那為什么會有爭議呢,那就在于在執(zhí)行順序上爭議,是先執(zhí)行排序取10條紀(jì)錄,還是取10條紀(jì)錄,再排序呢?兩種順序取出來的結(jié)果是截然相反的,先排序再取10條,就是取最近的10條,而先取10條,再排序,則取出的最早的10條紀(jì)錄。對于此語句,普遍的認(rèn)為執(zhí)行順序是先取10條紀(jì)錄再排序的。所以此語句應(yīng)該是錯誤。但實際上并非如此,此語句的執(zhí)行順序和order

by的字段有關(guān)系,如果你order

by

的字段是pk,則是先排序,再取10條(速度比第一種語句快),而排序字段不是pk

時,是先取10條再排序,此時結(jié)果就與要求不一樣了,所以第二種寫法一定要在排序字段是主鍵的情況下才能保證結(jié)果正確。

row_number()

over()這個分析函數(shù)是從9i開始提供的,一般的用途和rownum差不多。

一般寫法row_number()

over(

order

by

order_date

desc)

生成的順序和rownum的語句一樣,效率也一樣(對于同樣有order

by

的rownum語句來說),所以在這種情況下兩種用法是一樣的。

在Oracle怎樣查詢表中的top10條記錄

下面是關(guān)于rownum的介紹 ================================ Rownum和row_number() over()的使用 ROWNUM是Oracle從8開始提供的一個偽列,是把SQL出來的結(jié)果進(jìn)行編號,始終從1開始,常見的用途就是用來分頁輸出. 比如SELECT *FROM torderdetail a WHERE ROWNUM = 10 這條語句就是輸出前10條紀(jì)錄,在這里用途上類似于sql sever的top,不過rownum對于指定編號區(qū)間的輸出應(yīng)該說更強大SELECT *FROM (SELECT a.*, ROWNUM rn FROM torderdetail a) WHERE rn = 10 AND rn = 20 這條語句即是輸出第10到第20條紀(jì)錄,這里之所以用rownum rn,是把rownum轉(zhuǎn)成實例,因為rownum本身只能用 =的比較方式,只有轉(zhuǎn)成實列,這樣就可做 =的比較了。 在實際用途中,常常會要求取最近的幾條紀(jì)錄,這就需要先對紀(jì)錄進(jìn)行排序后再取rownum =一般常見的SELECT *FROM (SELECT a.* FROM torderdetail a ORDER BY order_date DESC) WHERE ROWNUM = 10 而在CSDN曾經(jīng)發(fā)生過討論,關(guān)于取近的10條紀(jì)錄,有人給出這樣的語句SELECT a.* FROM torderdetail a WHERE ROWNUM = 10 ORDER BY order_date DESC 之所以會出現(xiàn)這樣的語句,主要是從效率上的考慮,前面條語句,是要進(jìn)行全表掃描后再排序,然后再取10條紀(jì)錄,后一條語句則不會全表掃描,只會取出10條紀(jì)錄,很明顯后條語句的效率會高許多。 那為什么會有爭議呢,那就在于在執(zhí)行順序上爭議,是先執(zhí)行排序取10條紀(jì)錄,還是取10條紀(jì)錄,再排序呢?兩種順序取出來的結(jié)果是截然相反的,先排序再取10條,就是取最近的10條,而先取10條,再排序,則取出的最早的10條紀(jì)錄。對于此語句,普遍的認(rèn)為執(zhí)行順序是先取10條紀(jì)錄再排序的。所以此語句應(yīng)該是錯誤。但實際上并非如此,此語句的執(zhí)行順序和order by的字段有關(guān)系,如果你order by 的字段是pk,則是先排序,再取10條(速度比第一種語句快),而排序字段不是PK 時,是先取10條再排序,此時結(jié)果就與要求不一樣了,所以第二種寫法一定要在排序字段是主鍵的情況下才能保證結(jié)果正確。 Row_number() over()這個分析函數(shù)是從9I開始提供的,一般的用途和rownum差不多。 一般寫法row_number() over( order by order_date desc) 生成的順序和rownum的語句一樣,效率也一樣(對于同樣有order by 的rownum語句來說),所以在這種情況下兩種用法是一樣的。

oracle如何查詢前十個數(shù)據(jù)

oracle中前N條數(shù)據(jù)可用row_number來實現(xiàn)。

如表中數(shù)據(jù):

現(xiàn)在要求按照ID倒序,取出前十位:

oracle中執(zhí)行方法:

select?t.id,t.name?from

(select?test.*,row_number()?over?(order?by?id?desc)?rn?from?test)?t

where?rn=10;

結(jié)果:

當(dāng)前文章:oracle怎么查看前十條記錄,oracle查詢前十條記錄
本文鏈接:http://m.kartarina.com/article10/heiedo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃網(wǎng)站設(shè)計公司標(biāo)簽優(yōu)化品牌網(wǎng)站制作定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計公司
主站蜘蛛池模板: 无码av高潮喷水无码专区线| 无码专区HEYZO色欲AV| 成人h动漫精品一区二区无码| 亚洲av中文无码乱人伦在线观看| 亚洲av无码专区在线电影| 国产在线精品无码二区二区| 亚洲AV成人无码网站| 国产精品热久久无码av| 成人免费无码精品国产电影| 亚洲一区爱区精品无码| 国产精品一区二区久久精品无码 | 在线播放无码后入内射少妇| 精品久久久久久久无码久中文字幕 | 久久精品中文字幕无码| 狠狠躁狠狠爱免费视频无码| 无码中文字幕日韩专区视频| 尤物永久免费AV无码网站| 蜜桃无码AV一区二区| 人妻中文字系列无码专区| 精品无码久久久久国产| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 亚洲aⅴ无码专区在线观看春色| 亚洲人成人无码网www国产| 国产99久久九九精品无码| 亚洲午夜无码久久久久软件| 亚洲av无码一区二区三区四区| 亚洲日韩精品一区二区三区无码| 用舌头去添高潮无码视频| 粉嫩高中生无码视频在线观看| 亚洲av成本人无码网站| 亚洲GV天堂GV无码男同| 人妻少妇乱子伦无码视频专区| 亚洲综合av永久无码精品一区二区| 国产成人无码午夜视频在线观看| 日韩av无码成人无码免费| 亚洲AV无码国产剧情| 色综合无码AV网站| 岛国av无码免费无禁网站| 亚洲av永久无码一区二区三区| 影音先锋中文无码一区 | 国产免费久久久久久无码|