国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

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

瀏覽:209日期:2023-03-12 15:25:35
目錄
  • 0. 前言
  • 1. 先說結論
  • 2. 舉個例子
    • 1. 數據準備
    • 2. 使用rownum方式獲取前幾行數據
    • 3. 使用fetch方式獲取前幾行數據(推薦)
  • 總結

    0. 前言

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

    1. 先說結論

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

    2. 舉個例子

    1. 數據準備

    在之前所說的,在線oracle學習網站中準備好數據如下:

    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", "大強", "男");INSERT INTO people VALUES ("8", "大青", "男");

    這里將id類比時間字段,一般查詢根據時間進行倒序:

    select * from peopleorder by id desc

    2. 使用rownum方式獲取前幾行數據

    在oracle數據庫中,查詢出來的數據,可以通過rownum(行數)來指定具體第幾行數據,但需要注意以下幾點

    • 查詢出來的數據,第一行是 rownum=1,并不是從0開始的。
    • 用rownum方式獲取數據,必須要有一層嵌套select語句,這也是此方法最大的缺點,導致sql多一層。

    倒序查詢之后,獲取第一行數據:

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

    倒序查詢之后,獲取前4行數據:

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

    如果不使用嵌套select,則會報錯語法錯誤:

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

    fetch方式除了獲取前幾行數據,還有另一個作用,就是進行分頁的時候使用。

    fetch使用需要注意如下幾點:

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

    倒序查詢之后,獲取第一行數據:

    select * from peopleorder by id descfetch next 1 rows only

    倒序查詢之后,獲取前4行數據:

    select * from peopleorder by id descfetch next 4 rows only

    fetch用于分頁,從第n行后,取m返回結果集

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

    總結

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

    標簽: Oracle
    主站蜘蛛池模板: 新版天堂中文资源官网 | 亚洲高清国产一区二区三区 | 国产乱子伦真实china | 亚洲 欧美 激情 另类 自拍 | 足恋玩丝袜脚视频免费网站 | 久久福利影视 | 亚洲波多野结衣日韩在线 | 自拍视频一区 | 国产精品成人免费综合 | 免费人成年短视频在线观看网站 | 成熟的女性强烈交性视频 | 搞黄网站免费看 | chinese宾馆自拍hd | 亚洲免费视 | 久久网视频| 91精品国产爱久久久久久 | 欧美成人eee在线 | 国产欧美一区二区三区在线 | 日本毛片在线观看 | 国产成人精品视频免费大全 | 欧美精品专区55页 | 99精品视频在线观看re | 美女流白浆网站 | 91在线亚洲| 色伦网| 国产精品黄色 | 香港经典a毛片免费观看看 香港经典a毛片免费观看爽爽影院 | 亚洲成人国产 | 亚洲欧美精品一中文字幕 | 国产成人一区二区视频在线观看 | 日韩一区二区三区视频在线观看 | 一区二区三区在线免费看 | 久久视频这里只精品3国产 久久视频这里只有精品 | 日本精品视频一视频高清 | 97一级毛片全部免费播放 | 日本肥老妇色xxxxx日本老妇 | 窝窝女人体国产午夜视频 | japanese乱子另类 | 国内精品七七久久影院 | 欧美片网站免费 | 九九在线偷拍视频在线播放 |