读书人

甄别一条分页语句

发布时间: 2013-01-01 14:04:19 作者: rapoo

鉴别一条分页语句

select top 4 * from userinfo where userid not in (select top 4 userid from userinfo order by userid desc)order by userid desc 

每页大小为4,第二页的信息
应该显示 id为 5,6,7,8的 可怎么就没要我的效果?
[解决办法]
--用一句SQL取出第 m 条到第 n 条记录的方法      
1 --从Table 表中取出第 m 条到第 n 条的记录:(Not In 版本)
select * from Item
select top n-m+1 * from TABLE where (id NOT IN (select top m-1 id FROM TABLE ))

2--从TABLE表中取出第m到n条记录 (Exists版本)

SELECT TOP n-m+1 * FROM TABLE AS a WHERE Not Exists
(Select * From (Select Top m-1 * From TABLE order by id) b Where b.id=a.id )
Order by id

3--m为上标,n为下标,例如取出第8到12条记录,m=8,n=12,Table为表名
这是最好用的一条!
Select Top n-m+1 * From Table Where Id>(Select Max(Id) From
(Select Top m-1 Id From Table Order By Id Asc) Temp) Order By Id Asc

参考!
[解决办法]
引用:
SQL codeselecttop4*from userinfowhere useridnotin (selecttop4 useridfrom userinfoorderby useriddesc)orderby useriddesc
? ? ? ? ? 每页大小为4,第二页的信息
应该显示 id为 5,6,7,8的 可怎么就没要我的效果?

既然你已经有行号了,试试如下

declare @pagesize int ,@pagenum int
set @pagesize= 4--输入
set @pagenum= 2--输入

select *
from userinfo
where id>@pagesize*(@pagenum-1)
and id<=@pagesize*@pagenum

[解决办法]
select top 4 * 
from userinfo
where userid
in (select top 8 userid from userinfo order by userid desc)order by userid ASC
?

读书人网 >SQL Server

热点推荐