db2分頁sql
A. db2轉化為mysql的分頁查詢
MySQL 分頁, 太省事了. 直接 LIMIT 就可以啦!
LIMIT
接受一個或兩個數字參數。參數必須是一個整數常量。如果給定兩個參數,第一個參數指定第一個返回記錄行的偏移量,第二個參數指定返回記錄行的最大數目。初始記錄行的偏移量是
0(而不是 1)
例如: 假設每頁10行。
SELECT * FROM news ORDER BY id DESC LIMIT 0, 10 為獲取 第1行開始。 累計檢索10行。
翻1頁以後。第2頁
SELECT * FROM news ORDER BY id DESC LIMIT 10, 10;
第3頁
SELECT * FROM news ORDER BY id DESC LIMIT 20, 10;
B. db2分頁技術優化問題:
fetchfirst20rowsonly是提取前20條數據的不能作為分頁來使用。
分頁有三種:
1、 如果一定要使用fetchfirst 20 rowsonly 的方式,可以使用WITH AS 方式實現:
-------------------------------------------------
WITH TMP AS(
select * from (
select *,rownumber() over(order by id asc ) as row_id from table_name
) where row_id > (pagenumber-1)*pagesize
)
SELECT TMP.* FROM TMP WHERE fetch first pagesize rows only
-------------------------------------------------
2、比較常見的SQL分頁,可以使用沈陽java網友的寫法:
-----------------------------------------------------
select*from(
select*,rownumber()over(orderbyidasc)asrowidfromtable_name
)asa
wherea.rowid>=(pagenumber-1)*pagesize+1ANDa.rowid<=pagenumber*pagesize
-------------------------------------------------------
3、使用PageHelper分頁插件,也可以實現自動分頁:
使用方法
--------------------------------------------------------------
a.引配置
<plugins>
<plugin interceptor="com.github.pagehelper.PageHelper">
</plugins>
-------------------------------------------------------------
b.使用:
LogInfoQueryexample=newLogInfoQuery();
example.setOrderByClause("iddesc");
Criteriacriteria=example.createCriteria();
if(null!=logInfo.getStartTimeQuery()&&null!=logInfo.getEndTimeQuery()){
criteria.andOpTimeBetween(logInfo.getStartTimeQuery(),logInfo.getEndTimeQuery());
}
PageHelper.startPage(page.getPageNo(),page.getPageSize());
List<LogInfo>result=logInfoMapper.selectByExample(example);
PageInfo<LogInfo>pageInfo=newPageInfo<>(result);
returnpageInfo;
-------------------------------------------
使用示例結束。
如果不懂可以追問。
C. 求教db2中的sql語句,關於分頁查詢,查詢從第
一、查詢指定模式下的所有表
db2 LIST TABLES FOR SCHEMA 模式名
二、查詢當前模式下所有表及信息
db2 select tabname from syscat.tables where tabschema = CURRENT SCHEMA
三、查詢當前模式下所有的表
db2 LIST TABLES FOR ALL
四、查詢指定表名的表
db2 select * from syscat.tables where TABNAME = '表名'(表名必須大寫,不加模式,原因是TABNAME是syscat.tables中的一個欄位,TABSCHEMA模式是另一個欄位,兩者唯一確定一張表)
希望這些可以給你幫助
D. 同樣的分頁sql語句,在ibatis和db2中查詢的結果不一樣
99%是你分頁傳入參數有問題,仔細查一下代碼。
另查詢語句加上order by,固定使用某一條件排序。
E. 如何用sql存儲過程實現結果集分頁功能
1SET ANSI_NULLS ON
2GO
3SET QUOTED_IDENTIFIER ON
4GO
5CREATE TABLE [dbo].[testTable](
6 [id] [int] IDENTITY(1,1) NOT NULL,
7 [testDate] [datetime] NOT NULL CONSTRAINT [DF_testTable_testDate] DEFAULT (getdate()),
8 [name] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
9 [description] [nchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
10 [orderColum] [float] NOT NULL,
11 CONSTRAINT [PK_testTable] PRIMARY KEY CLUSTERED
12(
13 [id] ASC
14)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
15) ON [PRIMARY]
16
F. 在mysql 資料庫下,基於sql 語言的分頁語句
樓主問的是mysql下的吧
"QUERY_SQL
limit
?,?"
QUERY_SQL
就是查詢語句,比如select
sno,sname
from
student
limit
1,15;
使用limit關鍵字,第一個"?"是起始行號,
第二個"?"是返回條目數
=====================================================
另外提供給LZ其他資料庫的分頁語句
Oracle
SELECT
*
FROM
(
SELECT
A.*,
ROWNUM
RN
FROM
(QUERY_SQL
)
A
WHERE
ROWNUM
<=
?)
WHERE
RN
>=
?
結合rownum關鍵字,利用嵌套三層select
語句實現。第一個"?"表示終止行號,
第二個"?"表示其實行號
==============================================
Sql
Server
尚無通用語句
可使用top
n來返回前n條記錄或使用存儲過程
================================================
DB2
假設查詢語句:select
t1.*
from
t1
order
by
t1.id;
分頁語句可為:
"select
*
from
(
select
rownumber()
over
(order
by
t1.id)
as
row_,
t1.*
from
t1
order
by
t1.id)
as
temp_
where
row_
between
?+1
and
?"
返回兩個"?"之間的記錄
===================================================
InterBase
「QUERY_SQL
row
?
to
?」
返回兩個"?"之間的記錄
PostgreSQL
「QUERY_SQL
limit
?
offset
?」
第一個"?"為起始行號,第二個"?"代表
返回記錄數
=======================================================
G. J2EE項目,用的SSH,開始用的db2,用的hibernate分頁,後來用的oracle,但分頁sql還是db2時的,能改嗎
能改啊 oracle 的查詢語句跟DB2的稍微 不同 只需改下hql就OK了
H. 幾種常見SQL分頁方式效率比較,一帖子
sqlserver分頁 第一種分頁方法 需用到的參數: pageSize 每頁顯示多少條數據 pageNumber 頁數 從客戶端傳來 totalRecouds 表中的總記錄數 select count (*) from 表名 totalPages 總頁數 totalPages=totalRecouds%pageSize==0?totalRecouds/pageSize:totalRecouds/pageSize+1 pages 計算前pages 條數據 pages= pageSize*(pageNumber-1) SQL語句: select top pageSize * from 表名 where id not in (select top pages id from 表名 order by id) order by id 第二種分頁方法 pageSize 每頁顯示多少條數據 pageNumber 頁數 從客戶端傳來 pages=pageSize*(pageNumber-1)+1 select top pageSize * from 表名 where id>=(select max(id) from (select top pages id from 表名 order by id asc ) t ) mysql分頁 需用到的參數: pageSize 每頁顯示多少條數據 pageNumber 頁數 從客戶端傳來 totalRecouds 表中的總記錄數 select count (*) from 表名 totalPages 總頁數 totalPages=totalRecouds%pageSize==0?totalRecouds/pageSize:totalRecouds/pageSize+1 pages 起始位置 pages= pageSize*(pageNumber-1) SQL語句: select * from 表名 limit pages, pageSize; mysql 分頁依賴於關鍵字 limit 它需兩個參數:起始位置和pageSize 起始位置=頁大小*(頁數-1) 起始位置=pageSize*(pageNumber -1) oracle分頁 pageSize 每頁顯示多少條數據 pageNumber 頁數 從客戶端傳來 totalRecouds 表中的總記錄數 select count (*) from 表名 totalPages 總頁數 totalPages=totalRecouds%pageSize==0?totalRecouds/pageSize:totalRecouds/pageSize+1 startPage 起始位置 startPage= pageSize*(pageNumber-1)+1 endPage=startPage+pageSize SQL語句 select a.* from ( select rownum num ,t.* from 表名 t where 某列=某值 order by id asc )a where a.num>=startPage and a.num<endPage db2分頁 int startPage=1 //起始頁 int endPage; //終止頁 int pageSize=5; //頁大小 int pageNumber=1 //請求頁 startPage=(pageNumber-1)*pageSize+1 endPage=(startPage+pageSize); SQL語句 select * from (select 欄位1,欄位2,欄位3,欄位4,欄位5,rownumber() over(order by 排序欄位 asc ) as rowid from 表名 )as a where a.rowid >= startPage AND a.rowid <endPage access分頁 pageSize 每頁顯示多少條數據 pageNumber 頁數 從客戶端傳來 pages=pageSize*(pageNumber-1)+1 SQL語句 select top pageSize * from 表名 where id>=(select max(id) from (select top pages id from 表名 order by id asc ) t )