午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

oracle數(shù)據(jù)排序后獲取前幾行數(shù)據(jù)的寫法(rownum、fetch方式)

瀏覽:338日期:2023-03-12 15:25:35
目錄
  • 0. 前言
  • 1. 先說(shuō)結(jié)論
  • 2. 舉個(gè)例子
    • 1. 數(shù)據(jù)準(zhǔn)備
    • 2. 使用rownum方式獲取前幾行數(shù)據(jù)
    • 3. 使用fetch方式獲取前幾行數(shù)據(jù)(推薦)
  • 總結(jié)

    0. 前言

    無(wú)論在工作中,還是學(xué)習(xí)中,都會(huì)出現(xiàn)這樣子的需求,對(duì)某張表進(jìn)行了排序(按時(shí)間排序也好,其他字段排序也罷),然后獲取前x行的數(shù)據(jù),由于工作中經(jīng)常出現(xiàn),因此寫篇文章記錄一下多種寫法。

    1. 先說(shuō)結(jié)論

    1. 第一種使用rownum方式,在oracle數(shù)據(jù)庫(kù)中,查詢出來(lái)的數(shù)據(jù),可以通過(guò)rownum(行數(shù))來(lái)指定具體第幾行數(shù)據(jù),但需要注意以下幾點(diǎn):
      1. 查詢出來(lái)的數(shù)據(jù),第一行是 rownum=1,并不是從0開始的。
      2. 用rownum方式獲取數(shù)據(jù),必須要有一層嵌套select語(yǔ)句,這也是此方法最大的缺點(diǎn),導(dǎo)致sql多一層。
      3. 常用語(yǔ)法: select * from ( select * from people order by id desc ) where rownum = 1
    2. 第二種使用fetch方式,其還可以用于分頁(yè)查詢使用,fetch使用需要注意如下幾點(diǎn):
      1. oracle版本得12以上,否則無(wú)法使用了。
      2. 使用格式: OFFSET n ROWS FETCH NEXT m ROWS ONLY 從第n行開始,往后取m行(注 不包括第n行數(shù)據(jù))
      3. 也可以簡(jiǎn)寫為 FETCH NEXT m ROWS ONLY 從頭開始往后取m行
      4. 無(wú)需多一層select嵌套,可以直接寫在sql最后

    2. 舉個(gè)例子

    1. 數(shù)據(jù)準(zhǔn)備

    在之前所說(shuō)的,在線oracle學(xué)習(xí)網(wǎng)站中準(zhǔn)備好數(shù)據(jù)如下:

    CREATE TABLE people  (  id varchar2(10),  name varchar2(10),  sex varchar2(10));INSERT INTO people VALUES ("1", "小明", "男");INSERT INTO people VALUES ("2", "小紅", "女");INSERT INTO people VALUES ("3", "小黃", "男");INSERT INTO people VALUES ("4", "小紫", "男");INSERT INTO people VALUES ("5", "小綠", "男");INSERT INTO people VALUES ("6", "小白", "男");INSERT INTO people VALUES ("7", "大強(qiáng)", "男");INSERT INTO people VALUES ("8", "大青", "男");

    這里將id類比時(shí)間字段,一般查詢根據(jù)時(shí)間進(jìn)行倒序:

    select * from peopleorder by id desc

    2. 使用rownum方式獲取前幾行數(shù)據(jù)

    在oracle數(shù)據(jù)庫(kù)中,查詢出來(lái)的數(shù)據(jù),可以通過(guò)rownum(行數(shù))來(lái)指定具體第幾行數(shù)據(jù),但需要注意以下幾點(diǎn)

    • 查詢出來(lái)的數(shù)據(jù),第一行是 rownum=1,并不是從0開始的。
    • 用rownum方式獲取數(shù)據(jù),必須要有一層嵌套select語(yǔ)句,這也是此方法最大的缺點(diǎn),導(dǎo)致sql多一層。

    倒序查詢之后,獲取第一行數(shù)據(jù):

    select * from (  select * from people  order by id desc)where rownum = 1

    倒序查詢之后,獲取前4行數(shù)據(jù):

    select * from (  select * from people  order by id desc)where rownum <= 4

    如果不使用嵌套select,則會(huì)報(bào)錯(cuò)語(yǔ)法錯(cuò)誤:

    3. 使用fetch方式獲取前幾行數(shù)據(jù)(推薦)

    fetch方式除了獲取前幾行數(shù)據(jù),還有另一個(gè)作用,就是進(jìn)行分頁(yè)的時(shí)候使用。

    fetch使用需要注意如下幾點(diǎn):

    1. oracle版本得12以上,因此上面的在線學(xué)習(xí)oracle網(wǎng)頁(yè)無(wú)法使用了。
    2. 使用格式: OFFSET n ROWS FETCH NEXT m ROWS ONLY 從第n行開始,往后取m行(注 不包括第n行數(shù)據(jù))
    3. 也可以簡(jiǎn)寫為 FETCH NEXT m ROWS ONLY 從頭開始往后取m行
    4. 無(wú)需多一層select嵌套,可以直接寫在sql最后

    倒序查詢之后,獲取第一行數(shù)據(jù):

    select * from peopleorder by id descfetch next 1 rows only

    倒序查詢之后,獲取前4行數(shù)據(jù):

    select * from peopleorder by id descfetch next 4 rows only

    fetch用于分頁(yè),從第n行后,取m返回結(jié)果集

    select * from peopleorder by id descOFFSET n ROWS FETCH NEXT m ROWS ONLY

    總結(jié)

    到此這篇關(guān)于oracle數(shù)據(jù)排序后獲取前幾行數(shù)據(jù)的寫法(rownum、fetch方式)的文章就介紹到這了,更多相關(guān)oracle數(shù)據(jù)排序后獲取數(shù)據(jù)內(nèi)容請(qǐng)搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

    標(biāo)簽: Oracle
    主站蜘蛛池模板: 在线看成人片 | 久久久久久久久97 | 蜜桃精品视频在线 | 91成人精品一区在线播放 | 久久一二三四区 | 日韩一级黄 | www久久com | 国产精品久久久久久亚洲毛片 | av在线官网 | 丰满少妇久久久久久久 | 中文区中文字幕免费看 | 国产精品www | 国产一级大片在线观看 | 69xxx国产| 日韩毛片一级 | 久久精品7 | 成人午夜免费福利视频 | 一级特黄色片 | 日本男人天堂 | 国产免费网址 | 波多野吉衣一区二区三区 | 日本一区二区精品视频 | 91精品国产成人www | av中文字幕一区 | 国产欧美成人 | 欧美黄色录像片 | 伊人青青草 | 99自拍 | 狠狠操伊人 | 精品视频专区 | 日本不卡在线视频 | 亚洲黄色免费网站 | 成人福利午夜 | 国产又粗又长免费视频 | av最新天| 嫩草影院一区二区 | 深夜福利一区二区 | 一区二区精品在线观看 | 日日躁夜夜躁白天躁晚上躁91 | 欧美影视一区二区三区 | 亚洲视频网站在线观看 |