當(dāng)前位置:
首頁(yè) >
DB2 SQL查询结果集自动编号、返回条数范围控制研究
發(fā)布時(shí)間:2025/4/5
49
豆豆
生活随笔
收集整理的這篇文章主要介紹了
DB2 SQL查询结果集自动编号、返回条数范围控制研究
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
摘要: DB2 SQL語(yǔ)句實(shí)現(xiàn)查詢的記錄自動(dòng)編號(hào)、并根據(jù)編號(hào)進(jìn)一步實(shí)現(xiàn)記錄范圍控制、分頁(yè)查詢。
環(huán)境: IBM DB2 Universal V9.1 Windows XP Professional 要求:寫(xiě)一個(gè)SQL語(yǔ)句,在查詢結(jié)果中要顯示出記錄序號(hào),這個(gè)序號(hào)是是根據(jù)記錄順序自動(dòng)生成的。 測(cè)試初始化DB2 SQL腳本: drop table t_test; create table t_test (bs??????? bigint????????? not null? not null generated by default as identity, username? varchar(20)???? not null, password? varchar(20), remark??? varchar(200) ); comment on t_test (bs is '標(biāo)識(shí)', username is '用戶名', password is '密碼', remark is '備注' ); insert into t_test(username, password) values ('aaa', 'aaa'), ('bbb', 'bbb'), ('ccc', 'ccc'), ('ddd', 'ddd'), ('eee', 'eee'), ('fff', 'fff'), ('ggg', 'ggg'); 實(shí)現(xiàn): 1、實(shí)現(xiàn)查詢記錄編號(hào) 要求:查詢bs不等于1的所有記錄。 select t.*, ROW_NUMBER() OVER() as ROW_NO ?from t_test t where t.bs <> 1 查詢結(jié)果如下: bs? username password remark??? ROW_NO? --------------------------------------- 2?? 'bbb'?? 'bbb'?? '[Null]'??? 1 3?? 'ccc'?? 'ccc'?? '[Null]'??? 2 4?? 'ddd'?? 'ddd'?? '[Null]'??? 3 5?? 'eee'?? 'eee'?? '[Null]'??? 4 6?? 'fff'?? 'fff'?? '[Null]'??? 5 7?? 'ggg'?? 'ggg'?? '[Null]'??? 6 說(shuō)明:ROW_NUMBER() OVER() 是用來(lái)產(chǎn)生編號(hào)序列,從1開(kāi)始編號(hào),為整數(shù)。 as ROW_NO 是為編號(hào)列設(shè)定顯示名稱。 2、實(shí)現(xiàn)按照記錄范圍進(jìn)行查詢 要求:要求查詢第2-5條記錄。 select * ? from (select t.*, ROW_NUMBER() OVER() as ROW_NO ????????? from t_test t) as w ?where ROW_NO >= 2 ?and ROW_NO <=5 查詢結(jié)果如下: bs? username password remark??? ROW_NO? --------------------------------------- 2?? 'bbb'?? 'bbb'?? '[Null]'??? 2 3?? 'ccc'?? 'ccc'?? '[Null]'??? 3 4?? 'ddd'?? 'ddd'?? '[Null]'??? 4 5?? 'eee'?? 'eee'?? '[Null]'??? 5 3、實(shí)現(xiàn)SQL分頁(yè)查詢 對(duì)2中的SQL進(jìn)行擴(kuò)展,將范圍起始編號(hào)作為變量傳遞給SQL就可以實(shí)現(xiàn)分頁(yè)查詢了。當(dāng)然這個(gè)還需要程序的支持,掌握這個(gè)原理就很容易了,在此不做介紹。 總結(jié): 對(duì)記錄返回控制是數(shù)據(jù)庫(kù)系統(tǒng)的特性,不同的數(shù)據(jù)庫(kù)系統(tǒng)有不同的實(shí)現(xiàn)。SQL直接對(duì)結(jié)果集記錄控制效率上一般是最好的。結(jié)合高級(jí)編程語(yǔ)言,可以實(shí)現(xiàn)復(fù)雜的分頁(yè)查詢。
本文轉(zhuǎn)自 leizhimin 51CTO博客,原文鏈接:http://blog.51cto.com/lavasoft/27794,如需轉(zhuǎn)載請(qǐng)自行聯(lián)系原作者
環(huán)境: IBM DB2 Universal V9.1 Windows XP Professional 要求:寫(xiě)一個(gè)SQL語(yǔ)句,在查詢結(jié)果中要顯示出記錄序號(hào),這個(gè)序號(hào)是是根據(jù)記錄順序自動(dòng)生成的。 測(cè)試初始化DB2 SQL腳本: drop table t_test; create table t_test (bs??????? bigint????????? not null? not null generated by default as identity, username? varchar(20)???? not null, password? varchar(20), remark??? varchar(200) ); comment on t_test (bs is '標(biāo)識(shí)', username is '用戶名', password is '密碼', remark is '備注' ); insert into t_test(username, password) values ('aaa', 'aaa'), ('bbb', 'bbb'), ('ccc', 'ccc'), ('ddd', 'ddd'), ('eee', 'eee'), ('fff', 'fff'), ('ggg', 'ggg'); 實(shí)現(xiàn): 1、實(shí)現(xiàn)查詢記錄編號(hào) 要求:查詢bs不等于1的所有記錄。 select t.*, ROW_NUMBER() OVER() as ROW_NO ?from t_test t where t.bs <> 1 查詢結(jié)果如下: bs? username password remark??? ROW_NO? --------------------------------------- 2?? 'bbb'?? 'bbb'?? '[Null]'??? 1 3?? 'ccc'?? 'ccc'?? '[Null]'??? 2 4?? 'ddd'?? 'ddd'?? '[Null]'??? 3 5?? 'eee'?? 'eee'?? '[Null]'??? 4 6?? 'fff'?? 'fff'?? '[Null]'??? 5 7?? 'ggg'?? 'ggg'?? '[Null]'??? 6 說(shuō)明:ROW_NUMBER() OVER() 是用來(lái)產(chǎn)生編號(hào)序列,從1開(kāi)始編號(hào),為整數(shù)。 as ROW_NO 是為編號(hào)列設(shè)定顯示名稱。 2、實(shí)現(xiàn)按照記錄范圍進(jìn)行查詢 要求:要求查詢第2-5條記錄。 select * ? from (select t.*, ROW_NUMBER() OVER() as ROW_NO ????????? from t_test t) as w ?where ROW_NO >= 2 ?and ROW_NO <=5 查詢結(jié)果如下: bs? username password remark??? ROW_NO? --------------------------------------- 2?? 'bbb'?? 'bbb'?? '[Null]'??? 2 3?? 'ccc'?? 'ccc'?? '[Null]'??? 3 4?? 'ddd'?? 'ddd'?? '[Null]'??? 4 5?? 'eee'?? 'eee'?? '[Null]'??? 5 3、實(shí)現(xiàn)SQL分頁(yè)查詢 對(duì)2中的SQL進(jìn)行擴(kuò)展,將范圍起始編號(hào)作為變量傳遞給SQL就可以實(shí)現(xiàn)分頁(yè)查詢了。當(dāng)然這個(gè)還需要程序的支持,掌握這個(gè)原理就很容易了,在此不做介紹。 總結(jié): 對(duì)記錄返回控制是數(shù)據(jù)庫(kù)系統(tǒng)的特性,不同的數(shù)據(jù)庫(kù)系統(tǒng)有不同的實(shí)現(xiàn)。SQL直接對(duì)結(jié)果集記錄控制效率上一般是最好的。結(jié)合高級(jí)編程語(yǔ)言,可以實(shí)現(xiàn)復(fù)雜的分頁(yè)查詢。
本文轉(zhuǎn)自 leizhimin 51CTO博客,原文鏈接:http://blog.51cto.com/lavasoft/27794,如需轉(zhuǎn)載請(qǐng)自行聯(lián)系原作者
總結(jié)
以上是生活随笔為你收集整理的DB2 SQL查询结果集自动编号、返回条数范围控制研究的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 修改CMD设置使其支持鼠标选择复制
- 下一篇: Hibernate用Mysql数据库时链