oracle怎么獲取行,在oracle中如何實現SELECT TOP N取得前幾行記錄

在sql server中可以通過SELECT TOP N來取得想要結果的前幾行的信息。

但是在oracle中必須借助偽列rownum來完成

一個查詢語句在取得結果集后,偽列rownum就會從1開始,從上往下依次遞增。rownum是對結果集的編序排列。例如下表:

SQL> select id,name,salary,rownum from wages;

ID NAME ? ? ? ? ? SALARY ? ? ROWNUM

---------- ---------- ---------- ----------

1 zhangsan ? ? ? ? 3600 ? ? ? ? ?1

2 lisi ? ? ? ? ? ? 2500 ? ? ? ? ?2

3 wangwu ? ? ? ? ? 5000 ? ? ? ? ?3

4 zhaoliu ? ? ? ? ?4500 ? ? ? ? ?4

5 xiaoming ? ? ? ? 2000 ? ? ? ? ?5

所以取得該表的前三行,為

SQL> select id,name,salary,rownum from wages where rownum<=3;

ID NAME ? ? ? ? ? SALARY ? ? ROWNUM

---------- ---------- ---------- ----------

1 zhangsan ? ? ? ? 3600 ? ? ? ? ?1

2 lisi ? ? ? ? ? ? 2500 ? ? ? ? ?2

3 wangwu ? ? ? ? ? 5000 ? ? ? ? ?3

但是,這樣直接取表的前N行一般是無意義的。rownum一般是和order by搭配使用,通過排序,再取得自己想要的前幾行。

但是在使用rownum的時候要注意,使用排序后,返回的結果順序是進行了排序,但是rownum還是和原來的一樣,沒有隨著排序而改變。

原因:ROWNUM的編排在排序之前就產生了。

SQL> select id,name,salary,rownum from wages order by salary;

ID NAME ? ? ? ? ? SALARY ? ? ROWNUM

---------- ---------- ---------- ----------

5 xiaoming ? ? ? ? 2000 ? ? ? ? ?5

2 lisi ? ? ? ? ? ? 2500 ? ? ? ? ?2

1 zhangsan ? ? ? ? 3600 ? ? ? ? ?1

4 zhaoliu ? ? ? ? ?4500 ? ? ? ? ?4

3 wangwu ? ? ? ? ? 5000 ? ? ? ? ?3

所以此時使用要取工資最高的前三名,就發生了錯誤的結果

SQL> select id,name,salary,rownum from wages where rownum<=3 order by salary;

ID NAME ? ? ? ? ? SALARY ? ? ROWNUM

---------- ---------- ---------- ----------

2 lisi ? ? ? ? ? ? 2500 ? ? ? ? ?2

1 zhangsan ? ? ? ? 3600 ? ? ? ? ?1

3 wangwu ? ? ? ? ? 5000 ? ? ? ? ?3

但是,我們可以需要嵌套一層子查詢來抽取排序好的數據

SQL> ?select id,name,salary,rownum from (select * from wages order by salary);

ID NAME ? ? ? ? ? SALARY ? ? ROWNUM

---------- ---------- ---------- ----------

5 xiaoming ? ? ? ? 2000 ? ? ? ? ?1

2 lisi ? ? ? ? ? ? 2500 ? ? ? ? ?2

1 zhangsan ? ? ? ? 3600 ? ? ? ? ?3

4 zhaoliu ? ? ? ? ?4500 ? ? ? ? ?4

3 wangwu ? ? ? ? ? 5000 ? ? ? ? ?5

此時,rownum已經發生了變化,在通過外部查詢指定范圍,就可以得到想要的正確結果

SQL> select id,name,salary,rownum from (select * from wages order by salary) where rownum<=3;

ID NAME ? ? ? ? ? SALARY ? ? ROWNUM

---------- ---------- ---------- ----------

5 xiaoming ? ? ? ? 2000 ? ? ? ? ?1

2 lisi ? ? ? ? ? ? 2500 ? ? ? ? ?2

1 zhangsan ? ? ? ? 3600 ? ? ? ? ?3

來自 “ ITPUB博客 ” ,鏈接:http://blog.itpub.net/31386161/viewspace-2128815/,如需轉載,請注明出處,否則將追究法律責任。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/392217.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/392217.shtml
英文地址,請注明出處:http://en.pswp.cn/news/392217.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

圖片管理程序(Java)

圖片管理程序 gitee完整代碼下載 github完整代碼下載 華南農業大學課程設計作品&#xff08;99分&#xff09; 問題描述 題目目的是編寫一個能夠對數字像片進行管理的應用程序。 程序能夠顯示的圖片格式包括,.JPG、.JPEG、.GIF、.PNG、和.BMP。 圖像文件尺寸,要求能夠處理從…

氣流與路易吉,阿戈,MLFlow,KubeFlow

任務編排工具和工作流程 (Task orchestration tools and workflows) Recently there’s been an explosion of new tools for orchestrating task- and data workflows (sometimes referred to as “MLOps”). The quantity of these tools can make it hard to choose which o…

移動WEB開發之JS內置touch事件[轉]

iOS上的Safari也支持click 和mouseover等傳統的交互事件&#xff0c;只是不推薦在iOS的瀏覽器應用上使用click和mouseover&#xff0c;因為這兩個事件是為了支持鼠標點擊而設計 出來的。Click事件在iOS上會有半秒左右的延遲&#xff0c;原因是iOS要highlight接收到click的eleme…

編寫代碼的軟件用什么編寫的_如何通過像編寫代碼一樣克服對編寫的恐懼

編寫代碼的軟件用什么編寫的by Chris Rowe通過克里斯羅 How often do you get the fear? What do I mean by fear? How about the knot I got in my stomach just before I plunged out of plane on a parachute jump? It’s more than the brain logically planning to av…

快速學習一個新的模塊

1、模塊名.__doc__查看函數簡介&#xff0c;為了便于查看&#xff0c;采用print&#xff08;模塊名.__doc__&#xff09;打印出來&#xff0c;這樣的格式便于查看。 2、采用內置方法dir()查看模塊的變量、函數、類等等&#xff1b;采用"模塊名.__all__"查看模塊中提供…

php 公鑰格式轉換,如何把OpenSSH公鑰轉換成OpenSSL格式

《如何把OpenSSH公鑰轉換成OpenSSL格式》要點&#xff1a;本文介紹了如何把OpenSSH公鑰轉換成OpenSSL格式&#xff0c;希望對您有用。如果有疑問&#xff0c;可以聯系我們。首先看看OpenSSL工具的簡單使用方法,我們以rsa加密算法為例生成一個私鑰&#xff1a;openssl genrsa -o…

模擬操作系統(Java)

gitee完整代碼下載 github完整代碼下載 一、 需求分析 模擬一個采用多道程序設計方法的單用戶操作系統&#xff0c;該操作系統包括進程管理、存儲管理、設備管理、文件管理和用戶接口四部分。預計程序所能達到的功能&#xff1a; 進程管理模擬&#xff1a;實現操作系統進程管…

數據庫面試復習_數據科學面試復習

數據庫面試復習大面試前先刷新 (REFRESH BEFORE THE BIG INTERVIEW) 介紹 (Introduction) I crafted this study guide from multiple sources to make it as comprehensive as possible. This guide helped me prepare for both the technical and behavioral aspects of the …

hibernate緩存

&#xff08;轉自&#xff1a;http://www.cnblogs.com/java-class/p/6108175.html&#xff09; 閱讀目錄 1. 為什么要用 Hibernate 緩存&#xff1f;2. 項目實戰3. Hibernate 緩存原理回到頂部1. 為什么要用 Hibernate 緩存&#xff1f; Hibernate是一個持久層框架&#xff0c;…

oracle 連接greenplum,Oracle通過DBLINK訪問GreenPlum

為多個數據庫之間的整合和遷移做POC&#xff0c;嘗試使用Oracle Gateway和Heterogeneous Service來中轉訪問&#xff0c;測試過好多次&#xff0c;最終發現只有在32位的Oracle當中才能成功配置。 配置環境如下&#xff1a; Windows 2003 32bit 或 Windows 2008 64bit Oracle10G…

如何使用React和Redux前端創建Rails項目

by Mark Hopson馬克霍普森(Mark Hopson) 如何使用React和Redux前端(加上Typescript&#xff01;)創建Rails項目 (How to create a Rails project with a React and Redux front-end (plus Typescript!)) 在Rails項目中使用React和Redux設置單頁Javascript App的完整指南。 (A …

分布與并行計算—用任務管理器畫CPU正弦曲線(Java)

class drawSin implements Runnable{Overridepublic void run() {final double SPLIT 0.01;// 角度的分割final int COUNT (int) (2 / SPLIT);// 2PI分割的次數&#xff0c;也就是2/0.01個&#xff0c;正好是一周final double PI Math.PI;final int interval 100;// 時間間…

Rails文件上傳file_field報錯Encoding::UndefinedConversionError

服務器用的是ubuntu12 64bit&#xff0c;環境是ruby1.9.3rails3mysql&#xff0c;測試是在windows2003上。 上傳一個【.gitconfig】文件&#xff0c;沒有問題&#xff0c;上傳【新浪微博數據挖掘.pdf】報錯&#xff0c;上傳【back.jpg】報錯。 下面是兩段信息&#xff0c;是從【…

好久不來這里寫東西了.

我正準備離開學校去實現自己的目標,很清楚自己在學校的... ...做共享程序員,就不得不考慮些商業上的東西,自己要吃飯啊!我想我是該好好的處理一下這二者的關系. 轉載于:https://www.cnblogs.com/wangxiang/archive/2007/01/01/609714.html

Asp.net mvc中使用配置Unity

第一步&#xff1a;添加unity.mvc 第二步&#xff1a;在添加之后會在app_start中生成UnityConfig.cs&#xff0c;UnityMvcActivator.cs 第三步&#xff1a;使用 第四步&#xff1a;效果展示 轉載于:https://www.cnblogs.com/WJ--NET/p/7117839.html

頂級數據恢復_頂級R數據科學圖書館

頂級數據恢復Data science is the discipline of making data useful數據科學是使數據有用的學科 When we talk about the top programming language for Data Science, we often find Python to be the best fit for the topic. Sure, Python is undoubtedly an excellent cho…

xp系統oracle數據庫,Oracle10g 數據庫的安裝基于windowsXP

Oracle的安裝一、首先去官網下載自身系統相對應的數據庫軟件http://www.oracle.com/cn/index.htmlOracle軟件本身是免費的&#xff0c;個人用途完全沒關系&#xff0c;商業用途并被發現才會被Oracle所要求收費&#xff0c;收費買的不是軟件&#xff0c;而是授權。何謂授權&…

了解React Native中的不同JavaScript環境

by Khoa Pham通過Khoa Pham 了解React Native中的不同JavaScript環境 (Get to know different JavaScript environments in React Native) React Native can be very easy to get started with, and then at some point problems occur and we need to dive deep into it.Reac…

分布與并行計算—生命游戲(Java)

生命游戲其實是一個零玩家游戲&#xff0c;它包括一個二維矩形世界&#xff0c;這個世界中的每個方格居住著一個活著的或死了的細胞。一個細胞在下一個時刻生死取決于相鄰八個方格中活著的或死了的細胞的數量。如果相鄰方格活著的細胞數量過多&#xff0c;這個細胞會因為資源匱…

正確認識 Vista 激活期限

當我們在安裝 Vista 時&#xff0c;可以不輸入序列號進行安裝&#xff0c;這和以往的操作系統安裝有所不同&#xff0c;我們不必再為安裝系統時找不到我們的序列號標簽而發愁。如果不輸入序列號而繼續安裝系統&#xff0c;那么系統將提示我們有30天的激活期限&#xff01;這里的…