电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

教你在Oracle中實現SELECT TOP N的方法

瀏覽:9日期:2023-11-25 17:05:34
本文通過舉例的方式來教你如何在Oracle中實現SELECT TOP N的方法。 1.在Oracle中實現SELECT TOP N : 由于ORACLE不支持SELECT TOP語句,所以在ORACLE中經常是用ORDER BY跟ROWNUM的組合來實現SELECT TOP N的查詢。 簡單地說,實現方法如下所示: SELECT 列名1...列名n FROM (SELECT 列名1...列名n  FROM 表名 ORDER BY 列名1...列名n) WHERE ROWNUM <= N(抽出記錄數) ORDER BY ROWNUM ASC下面舉個例子簡單說明一下。 顧客表customer(id,name)有如下數據: ID NAME 01 first02 Second03 third04 forth05 fifth06 sixth07 seventh08 eighth09 ninth10 tenth11 last則按NAME的字母順抽出前三個顧客的SQL語句如下所示: SELECT * FROM (SELECT * FROM CUSTOMER ORDER BY NAME) WHERE ROWNUM <= 3 ORDER BY ROWNUM ASC輸出結果為: ID NAME08 eighth05 fifth01 first2.在TOP N紀錄中抽出第M(M <= N)條記錄: 在得到了TOP N的數據之后,為了抽出這N條記錄中的第M條記錄,我們可以考慮從ROWNUM著手。我們知道,ROWNUM是記錄表中數據編號的一個隱藏子段,所以可以在得到TOP N條記錄的時候同時抽出記錄的ROWNUM,然后再從這N條記錄中抽取記錄編號為M的記錄,即是我們希望得到的結果。 從上面的分析可以很輕易得到下面的SQL語句: SELECT 列名1...列名n FROM ( SELECT ROWNUM RECNO, 列名1...列名nFROM (SELECT 列名1...列名n FROM 表名 ORDER BY 列名1...列名n) WHERE ROWNUM <= N(抽出記錄數) ORDER BY ROWNUM ASC ) WHERE RECNO = M(M <= N)同樣以上表的數據為基礎,那么得到以NAME的字母順排序的第二個顧客的信息的SQL語句應該這樣寫: SELECT ID, NAME FROM ( SELECT ROWNUM RECNO, ID, NAME FROM (SELECT * FROM CUSTOMER ORDER BY NAME) WHERE ROWNUM <= 3 ORDER BY ROWNUM ASC ) WHERE RECNO = 2結果則為: ID NAME05 fifth3.抽出按某種方式排序的記錄集中的第N條記錄: 在2的說明中,當M = N的時候,即為我們的標題第三點所講的結果。實際上,第二點的做法在里面N>M的部分的數據是基本上不會用到的,我們僅僅是為了說明方便而采用。 如上所述,則SQL語句應為: SELECT 列名1...列名n FROM ( SELECT ROWNUM RECNO, 列名1...列名nFROM (SELECT 列名1...列名n FROM 表名 ORDER BY 列名1...列名n) WHERE ROWNUM <= N(抽出記錄數) ORDER BY ROWNUM ASC ) WHERE RECNO = N 那么,2中的例子的SQL語句則為: SELECT ID, NAME FROM ( SELECT ROWNUM RECNO, ID, NAME FROM (SELECT * FROM CUSTOMER ORDER BY NAME) WHERE ROWNUM <= 2 ORDER BY ROWNUM ASC ) WHERE RECNO = 2結果為: ID NAME05 fifth4.抽出按某種方式排序的記錄集中的第M條記錄開始的X條記錄: 上一點所講的僅僅是抽取一條記錄的情況,當我們需要抽取多條記錄的時候,此時在第二點中的N的取值應該是在N >= (M + X - 1)這個范圍內,當然最經濟的取值就是取等號的時候了。當然最后的抽取條件也不是RECNO = N了,應該是RECNO BETWEEN M AND (M + X - 1)了,所以隨之而來的SQL語句則為: SELECT 列名1...列名n FROM ( SELECT ROWNUM RECNO, 列名1...列名nFROM (SELECT 列名1...列名n FROM 表名 ORDER BY 列名1...列名n) WHERE ROWNUM <= N (N >= (M + X - 1)) ORDER BY ROWNUM ASC ) WHERE RECNO BETWEEN M AND (M + X - 1)同樣以上面的數據為例,則抽取NAME的字母順的第二條記錄開始的3條記錄的SQL語句為: SELECT ID, NAME FROM ( SELECT ROWNUM RECNO, ID, NAME FROM (SELECT * FROM CUSTOMER ORDER BY NAME) WHERE ROWNUM <= (2 + 3 - 1) ORDER BY ROWNUM ASC ) WHERE RECNO BETWEEN 2 AND (2 + 3 - 1)結果如下: ID NAME05 fifth01 first04 forth以此為基礎,再擴展的話,做成存儲過程,將開始記錄數以及抽取記錄數為參數,就可以輕松實現分頁抽取數據。
標簽: Oracle 數據庫
主站蜘蛛池模板: 上海皓越真空设备有限公司官网-真空炉-真空热压烧结炉-sps放电等离子烧结炉 | LED显示屏_LED屏方案设计精准报价专业安装丨四川诺显科技 | 炒货机-炒菜机-炒酱机-炒米机@霍氏机械| 成都茶楼装修公司 - 会所设计/KTV装修 - 成都朗煜装饰公司 | 富森高压水枪-柴油驱动-养殖场高压清洗机-山东龙腾环保科技有限公司 | 上海质量认证办理中心| 凝胶成像系统(wb成像系统)百科-上海嘉鹏 | 原子吸收设备-国产分光光度计-光谱分光光度计-上海光谱仪器有限公司 | 天津暖气片厂家_钢制散热器_天津铜铝复合暖气片_维尼罗散热器 | 环球周刊网| 常州律师事务所_常州律所_常州律师-江苏乐天律师事务所 | 强效碱性清洗剂-实验室中性清洗剂-食品级高纯氮气发生器-上海润榕科学器材有限公司 | 聚天冬氨酸,亚氨基二琥珀酸四钠,PASP,IDS - 远联化工 | 活性炭-蜂窝-椰壳-柱状-粉状活性炭-河南唐达净水材料有限公司 | 磁粉制动器|张力控制器|气胀轴|伺服纠偏控制器整套厂家--台灵机电官网 | 智能交通网_智能交通系统_ITS_交通监控_卫星导航_智能交通行业 | 山东包装,山东印刷厂,济南印刷厂-济南富丽彩印刷有限公司 | 代理记账_公司起名核名_公司注册_工商注册-睿婕实业有限公司 | 钢绞线万能材料试验机-全自动恒应力两用机-混凝土恒应力压力试验机-北京科达京威科技发展有限公司 | 分轨 | 上传文件,即刻分离人声和伴奏 | 石牌坊价格石牌坊雕刻制作_石雕牌坊牌楼石栏杆厂家_山东嘉祥石雕有限公司 | 无缝钢管-聊城无缝钢管-小口径无缝钢管-大口径无缝钢管 - 聊城宽达钢管有限公司 | 游泳池设计|设备|配件|药品|吸污机-东莞市太平洋康体设施有限公司 | 影合社-影视人的内容合作平台| 罐体电伴热工程-消防管道电伴热带厂家-山东沃安电气 | 底部填充胶_电子封装胶_芯片封装胶_芯片底部填充胶厂家-东莞汉思新材料 | 户外环保不锈钢垃圾桶_标识标牌制作_园林公园椅厂家_花箱定制-北京汇众环艺 | 罗茨真空机组,立式无油往复真空泵,2BV水环真空泵-力侨真空科技 | 细石混凝土泵_厂家_价格-烟台九达机械有限公司 | 塑料熔指仪-塑料熔融指数仪-熔体流动速率试验机-广东宏拓仪器科技有限公司 | 废气处理_废气处理设备_工业废气处理_江苏龙泰环保设备制造有限公司 | 粤丰硕水性环氧地坪漆-防静电自流平厂家-环保地坪涂料代理 | 合肥网络推广_合肥SEO网站优化-安徽沃龙First | _网名词典_网名大全_qq网名_情侣网名_个性网名 | 承插管件_不锈钢承插管件_锻钢高压管件-温州科正阀门管件有限公司 | 皮带机-带式输送机价格-固定式胶带机生产厂家-河南坤威机械 | 北京签证代办_签证办理_商务签证_旅游签证_寰球签证网 | 插针变压器-家用电器变压器-工业空调变压器-CD型电抗器-余姚市中驰电器有限公司 | 消泡剂-水处理消泡剂-涂料消泡剂-切削液消泡剂价格-东莞德丰消泡剂厂家 | STRO|DTRO-STRO反渗透膜(科普)_碟滤 | 5nd音乐网|最新流行歌曲|MP3歌曲免费下载|好听的歌|音乐下载 免费听mp3音乐 |