您的位置:首页 > 数据库

两种实现分页的sql语句

2010-11-03 22:38 288 查看
第一种,是我之前经常用的.not in

view source

print?

1
select
top
2 *
from
xy_role
where
id
not
in
2
(
select
top
4 id
from
xy_role)
其中 '2' 代表这每页显示的信息条数, '4' : 比如页面上的当前页是3页,就是(3-1)*(每个条数)

记得如果要排序的话在子查询中排序和筛选条件

第二种:用sqlserver2005以上版本中的函数row_number()

view source

print?

1
select
top
2 *
from
2
(
select
*,row_number()over (
order
by
id
desc
)
as
ro
from
xy_role)
as
a
3
where
a.ro>4
order
by
id
desc
使用row_number(),目的是让数据以流水号的方式排列,比如1,2,3,4,5.....这样的话 a表会有一个名字为 ro的列,

通过 where a.ro>4得到想要的结果.

性能上应该是第二种更好些.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: