------ row number ----------
-------- max/min -------------- row number ----------
declare
@pagesize
int,@pageindex
intset
@pagesize
=20;set
@pageindex=2
select
*from
(select row_number() over(order
by byod_zzfp.id desc) as
rowid
,byod_zzfp.
*from byod_zzfp where1=
1)t
where (rowid >
@pagesize
* (@pageindex
-1) and rowid <=
@pagesize
* (@pageindex)) order
by id desc
--cte表示式 --
declare
@pagesize
int,@pageindex
intset
@pagesize
=20;set
@pageindex=2
; with t as(
select row_number() over(order
by byod_zzfp.id desc) as
rowid
,byod_zzfp.
*from byod_zzfp where1=
1)select
*from
twhere (rowid >
@pagesize
* (@pageindex
-1) and rowid <=
@pagesize
* (@pageindex)) order
by id desc
createview codeproc
[dbo
].[usplgetsolutionlist
]@pagesize
int, --
頁碼大小
@pageindex
int, --
頁碼@strwhere
nvarchar(2000)='',
@totalrecordcount
int output --
總記錄數
asdeclare
@strsql
nvarchar(max) --
sql語句
declare
@sqlcount
int--
返回總記錄
declare
@strsqlcount
nvarchar(max) --
sql語句1,總記錄數語句
declare
@tempsql
nvarchar(max) --
查詢字段
declare
@temtableon
nvarchar(2000) --
表連線及表連線關係
declare
@order
nvarchar(500) --
排序set
@tempsql='
networkcutover.id
'set
@temtableon='
networkcutover networkcutover
inner join member member on networkcutover.dutymember = member.memberid '
set@strsql='
';set@order='
order by networkcutover.id desc
'if(@pageindex
<=1)
begin
set@strsql='
select top '+
str(@pagesize) +
@tempsql+'
from '+
@temtableon+'
where 1=1 '+
@strwhere
+@order;
endelse
begin
set@strsql='
select top '+
str(@pagesize)+
@tempsql+'
from '+
@temtableon+'
where networkcutover.id < (select min(t.id) from (select top '+
str(@pagesize
*(@pageindex
-1))+
'networkcutover.id from '+
@temtableon+'
where 1=1 '+
@strwhere
+@order+'
) t)'+
@strwhere
+@order
endprint
@strsql
set@strsqlcount='
select @sqlcount=count(*) from '+
@temtableon+'
where 1=1 '+
@strwhere
@strsqlcount
exec sp_executesql @strsqlcount,n'
@sqlcount int output
',@sqlcount
output
set@totalrecordcount
=@sqlcount
exec(@strsql)
go
小技巧:
可增加乙個總記錄數作為輸入引數,查詢條件不變的情況,總記錄數不變(不再查詢總記錄數)。第一次查詢輸入引數為0需要查詢總記錄數。
分頁的兩種技巧
分頁的兩種技巧 分頁的技巧有兩種,一種是直接透過t sql,另一種是透過store procedure,在這post出來跟大家分享一下 t sql 假設northwind有乙個customer的table,你需要取回41 50筆的記錄,t sql語法該如何作呢?select top 10 custo...
兩種分頁SQL效率比較
資料庫版本 oracle9i r9.2.0.6 兩種方案 1.select from select a.rownum rn from select from table a where rn 20 and rn 10 2.select from select a.rownum rn from sel...
java分頁的兩種方式
方式其實都非常的簡單,一種是資料庫分頁用limit限制取出條數,一種是在業務邏輯裡面分頁,我用的是jdbc,所以每次游標指定到一定的條數進行展示。因為只是簡單的進行原理學習,所以並沒有對 方面對嚴格的書寫,明白原理就好。主要的地方就是在進行資料庫查詢的時候,假設有一張表flownode,sql語句如...