淺析Mysql和Oracle分頁(yè)的區(qū)別
MySQL使用limit進(jìn)行分頁(yè)
select * from stu limit m,n; // m=(pageIndex-1)*pageSize,n=pageSize -- 返回總條,查詢表添加字段sql_calc_found_rows select sql_calc_found_rows a.* from AAA a limit m,n -- found_rows單獨(dú)查詢總條數(shù) select found_rows total;
- 第一個(gè)參數(shù)m表示起始行,第二個(gè)參數(shù)表示取多少行;
- pageIndex表示頁(yè)索引,即查詢第幾頁(yè)的數(shù)據(jù)(從1開始),pageSize表示頁(yè)大小,即一頁(yè)最多顯示多少行記錄;
- m= (2-1)*10+1=11,n=10,limit 11,10,表示從第11行開始取記錄行(包含第11行),共取10行,也表示查詢第2頁(yè)的數(shù)據(jù),這一頁(yè)最多顯示10行記錄。
Oracle使用rownum進(jìn)行分頁(yè)
select * from( select rownum rn,a.*,count(*) over() total from table_name a where rownum <= x -- 結(jié)束行,x=pageIndex*pageSize ) where rn >= y; -- 起始行,y=(pageIndex-1)*pageSize+1 -- 返回總條數(shù) select count(*) over() total from AAA
- >= y,<= x表示從第y行(起始行)~x行(結(jié)束行) 。
- rownum只能比較小于,不能比較大于,因?yàn)閞ownum是先查詢后排序的,例如你的條件為rownum>1,當(dāng)查詢到第一條數(shù)據(jù),rownum為1,則不符合條件。第2、3…類似,一直不符合條件,所以一直沒有返回結(jié)果。所以查詢的時(shí)候需要設(shè)置別名,然后查詢完成之后再通過調(diào)用別名進(jìn)行大于的判斷。
Mysql與Oracle級(jí)聯(lián)查詢
- start with: 指定起始節(jié)點(diǎn)的條件
- connect by: 指定父子行的條件關(guān)系
- prior: 查詢父行的限定符,格式: prior column1 = column2 or column1 = prior column2 and ...
- nocycle: 若數(shù)據(jù)表中存在循環(huán)行,那么不添加此關(guān)鍵字會(huì)報(bào)錯(cuò),添加關(guān)鍵字后,便不會(huì)報(bào)錯(cuò),但循環(huán)的兩行只會(huì)顯示其中的第一條
- 循環(huán)行: 該行只有一個(gè)子行,而且子行又是該行的祖先行
- connect_by_iscycle: 前置條件:在使用了nocycle之后才能使用此關(guān)鍵字,用于表示是否是循環(huán)行,0表示否,1 表示是
- connect_by_isleaf: 是否是葉子節(jié)點(diǎn),0表示否,1 表示是
- level: level偽列,表示層級(jí),值越小層級(jí)越高,level=1為層級(jí)最高節(jié)點(diǎn)
-- connect by: 指定父子行的條件關(guān)系 -- start with: 指定起始節(jié)點(diǎn)的條件 select c.bc_id,c.bc_name from org_busicorp c connect by prior c.bc_pid = c.bc_id start with c.bc_id = '001';
Mysql省市區(qū)級(jí)聯(lián)查詢
-- 二三級(jí)查詢 select c1.bc_id,c1.bc_name from org_busicorp c1 where c1.bc_pid = '00' union select c2.bc_id,c2.bc_name from org_busicorp c2 left join org_busicorp c1 on c1.bc_id = c2.bc_pid where c1.bc_pid = '00' -- 包含當(dāng)前id union select c3.bc_id,c3.bc_name from org_busicorp c3 where c3.bc_id = '00'
Mysql遞歸函數(shù)
SELECT ID.LEVEL, DATA.* FROM ( SELECT @ids AS _ids, ( SELECT @ids := GROUP_CONCAT( id ) FROM 表名 WHERE FIND_IN_SET( 父級(jí) id字段, @ids ) ) AS cids, @l := @l + 1 AS LEVEL FROM 表名, ( SELECT @ids := '條件id', @l := 0 ) b WHERE @ids IS NOT NULL ) ID, 表名 DATA WHERE FIND_IN_SET( DATA.id, ID._ids ) ORDER BY LEVEL, id
Mysql與Oracle插入數(shù)據(jù)存在修改不存在新增
Mysql插入數(shù)據(jù)存在修改、不存在新增
insert into `subject`(subjectId,subjectName) values('7','離散') on duplicate key update subjectName='離散數(shù)學(xué)';
Oracle插入數(shù)據(jù)存在修改、不存在新增
merge into 目標(biāo)表 a using 源表 b on(a.條件字段1=b.條件字段1 and a.條件字段2=b.條件字段2 ……) when matched then update set a.字段=b.字段 --目標(biāo)表別稱a和源表別稱b都不要省略 when not matched then insert (a.字段1,a.字段2……)values(b.字段1,b.字段2……) --目標(biāo)表別稱a可省略,源表別稱b不可省略
源表b可能是一張表結(jié)構(gòu)不同于a的表,有可能是一張構(gòu)建相同表結(jié)構(gòu)的臨時(shí)表,也有可能是我們自己組起來的數(shù)據(jù)
merge into student a using (select '7' as id from dual) s on (a.id = s.id) when matched then update set a.student_name = '小明二號(hào)' when not matched then insert (id, student_name, fk_class) values ('7', '小明', '2')
到此這篇關(guān)于淺析Mysql和Oracle分頁(yè)的區(qū)別的文章就介紹到這了,更多相關(guān)Mysql和Oracle分頁(yè)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL數(shù)據(jù)庫(kù)服務(wù)器端核心參數(shù)詳解和推薦配置
MySQL手冊(cè)上也有服務(wù)器端參數(shù)的解釋,以及參數(shù)值的相關(guān)說明信息,現(xiàn)針對(duì)我們大家重點(diǎn)需要注意、需要修改或影響性能 的服務(wù)器端參數(shù),作其用處的解釋和如何配置參數(shù)值的推薦,此事情拖了不少時(shí)間,為方便大家?guī)兔m錯(cuò)2011-12-12MySQL生成連續(xù)的數(shù)字/字符/時(shí)間序列的方法
有時(shí)候?yàn)榱松蓽y(cè)試數(shù)據(jù),或者填充查詢結(jié)果中的數(shù)據(jù)間隔,需要使用到一個(gè)連續(xù)的數(shù)據(jù)序列值,所以,今天我們就來介紹一下如何在 MySQL 中生成連續(xù)的數(shù)字、字符以及時(shí)間序列值,需要的朋友可以參考下2024-04-04mysql 5.7更改數(shù)據(jù)庫(kù)的數(shù)據(jù)存儲(chǔ)位置的解決方法
隨著MySQL數(shù)據(jù)庫(kù)存儲(chǔ)的數(shù)據(jù)逐漸變大,已經(jīng)將原來的存儲(chǔ)數(shù)據(jù)的空間占滿了,導(dǎo)致mysql已經(jīng)鏈接不上了。所以要給存放的數(shù)據(jù)換個(gè)地方,下面小編給大家分享mysql 5.7更改數(shù)據(jù)庫(kù)的數(shù)據(jù)存儲(chǔ)位置的解決方法,一起看看吧2017-04-04MySQL同步ES(Elasticsearch)的四種常見方案分享
MySQL和Elasticsearch(ES)是兩個(gè)非常重要的數(shù)據(jù)存儲(chǔ)和搜索技術(shù),MySQL是一種關(guān)系型數(shù)據(jù)庫(kù),而ES則是一種文檔型數(shù)據(jù)庫(kù),在許多情況下,我們需要將MySQL中的數(shù)據(jù)同步到ES中,本文將介紹四種常見的MySQL同步ES方案,需要的朋友可以參考下2023-07-07通過存儲(chǔ)過程動(dòng)態(tài)創(chuàng)建MySQL對(duì)象的流程步驟
在當(dāng)今數(shù)據(jù)驅(qū)動(dòng)的世界中,高效的數(shù)據(jù)庫(kù)管理至關(guān)重要,本文將展示如何通過存儲(chǔ)過程自動(dòng)化地創(chuàng)建各種?MySQL?數(shù)據(jù)庫(kù)對(duì)象,通過這些方法,我們可以快速響應(yīng)業(yè)務(wù)需求,提高數(shù)據(jù)庫(kù)管理的靈活性和效率,需要的朋友可以參考下2024-10-10MySql三種避免重復(fù)插入數(shù)據(jù)的方法
這篇文章主要介紹了MySql三種避免重復(fù)插入數(shù)據(jù)的方法,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫(kù),感興趣的朋友可以了解下2020-09-09MySQL實(shí)戰(zhàn)之Insert語(yǔ)句的使用心得
這篇文章主要給大家介紹了關(guān)于MySQL實(shí)戰(zhàn)之Insert語(yǔ)句的使用心得的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10