当前位置:首页 » 编程语言 » 分页查询sql语句
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

分页查询sql语句

发布时间: 2022-01-29 17:44:37

sql Server 分页 查询语句

四种方式实现SQLServer 分页查询
SQLServer 的数据分页:
假设现在有这样的一张表:
CREATE TABLE test
(
id int primary key not null identity,
names varchar(20)
)
然后向里面插入大约1000条数据,进行分页测试
假设页数是10,现在要拿出第5页的内容,查询语句如下:
--10代表分页的大小
select top 10 *
from test
where id not in
(
--40是这么计算出来的:10*(5-1)
select top 40 id from test order by id
)
order by id
原理:需要拿出数据库的第5页,就是40-50条记录。首先拿出数据库中的前40条记录的id值,然后再拿出剩余部分的前10条元素

第二种方法:
还是以上面的结果为例,采用另外的一种方法
--数据的意思和上面提及的一样
select top 10 *
from test
where id >
(
select isnull(max(id),0)
from
(
select top 40 id from test order by id
) A
)
order by id
原理:先查询前40条记录,然后获得其最id值,如果id值为null的,那么就返回0
然后查询id值大于前40条记录的最大id值的记录。
这个查询有一个条件,就是id必须是int类型的。

第三种方法:
select top 10 *
from
(
select row_number() over(order by id) as rownumber,* from test
) A
where rownumber > 40
原理:先把表中的所有数据都按照一个rowNumber进行排序,然后查询rownuber大于40的前十条记录
这种方法和oracle中的一种分页方式类似,不过只支持2005版本以上的
第四种:
存储过程查询
创建存储过程
alter procere pageDemo
@pageSize int,
@page int
AS
declare @temp int
set @temp=@pageSize*(@page - 1)
begin
select top (select @pageSize) * from test where id not in (select top (select @temp) id from test) order by id
end
执行存储过程
exec 10,5

Ⅱ sql分页语句查询问题

从t1结果集中取数据的时候没有排序,当然结果不会变
改成这样
select * from(select top 3 * from(select top 3 * from student order by 编号 desc) t1 order by 编号 desc) t2 order by 编号 asc

Ⅲ sql 语句 分页查询

方法1:
适用于 SQL Server 2000/2005

SELECT TOP 页大小 *
FROM table1
WHERE id NOT IN
(
SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id
)
ORDER BY id

方法2:
适用于 SQL Server 2000/2005

SELECT TOP 页大小 *
FROM table1
WHERE id >
(
SELECT ISNULL(MAX(id),0)
FROM
(
SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id
) A
)
ORDER BY id

方法3:
适用于 SQL Server 2005

SELECT TOP 页大小 *
FROM
(
SELECT ROW_NUMBER() OVER (ORDER BY id) AS RowNumber,* FROM table1
) A
WHERE RowNumber > 页大小*(页数-1)
这样可以么?

Ⅳ 如何用sql语句 实现分页查询

适用于 SQL Server 2000/2005

SELECT TOP 页大小 *

FROM table1

WHERE id NOT IN

SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id

Ⅳ 一条sql语句实现分页查询,且能返回记录总数

select *,(select count(*) from t1) from(
select top 2 * from(
select top 4 * from(
select * from t1
)as ttb0 order by id
)as ttb1 order by id desc
)as ttb2 order by id
在select后加个子查询就OK了,

Ⅵ 求SQL分页的语句

2个参数Start end
start 开始 end 结束
例如第二页从Start11条开始 结束end 21百

select * from (select rownum a,NEWS.* from NEWS where rownum<='"+end+"') b where b.a>'"+start+"'"

方法2 select * from NEWS limit a,b
a就是从第几条开始 b就是查询出的条数
例如 从第10条开始后的10条select * from NEWS limit 10,10
从第6条开始后的8条select * from NEWS limit 6,8

Ⅶ SQL分页查询,怎么一次性显示2页的查询结果

按照上面回答的,可以这样修改下:
SELECT 产品, SUM(CASE 季度 WHEN '第一季度' THEN 销售量 ELSE 0 END) AS 第一季度, SUM(CASE 季度 WHEN '第二季度' THEN 销售量 ELSE 0 END) AS 第二季度, SUM(CASE 季度 WHEN '第三季度' THEN 销售量 ELSE 0 END) AS 第三季度 FROM
(select *,ROW_NUMBER over(order by 产品) as rn from Tables )
where rn between @PageSize*(@PageIndex-1)+1 and @PageSize*@PageIndex
GROUP BY 产品 ORDER BY 产品,rn

@PageSize 每页几条数据
@PageIndex 页码
只需按照参数传递即可

Ⅷ sql分页查询语句 首页,上一页怎么实现

--假如每页显示条数据10条

--哪么第一页1~10 第二页11~20 即起始行数=10*(页数-1)+1,结束行=页数*10

declare@startint
declare@endint
set@start=8
set@end=18
select*from(
selectP_ID,P_ClassName,ROW_NUMBER()OVER(orderbyP_ID)asrowfrom
dbo.AD_Position)asa
whererowbetween@startand@end

--太酷了,这样一个分页就搞定了。还可以这样变化,可选参数只是[页的大小]

declare@pagesizeint
declare@startint
declare@endint
declare@pagecountint
set@pagecount=2
set@pagesize=10

set@start=(@pagesize*(@pagecount-1)+1)
set@end=@pagecount*@pagesize

select*from(
selectP_ID,P_ClassName,ROW_NUMBER()OVER(orderbyP_ID)asrowfrom
dbo.AD_Position)asa
whererowbetween@startand@end

这是前几年的一个博文摘录,希望对你用!

Ⅸ 关于分页查询的sql语句

这里的K不仅仅是个别名的作用,他把 (select *,row_number() over(order BY UserID) rowIndex from userinfo)做为一个表来查询 ,如果不加则作为一个查询结果集,SQL无法再查询结果集上在进行查询

Ⅹ Access数据库分页查询,效率sql语句

in的效率太低,不能利用索引,建议使用:
select top 每页数量 * from 表 where id >(select top 1 max(id) from (select top (页数-1)*每页数量 from 表 order by id,name)) 或
select top 每页数量 * from 表 where id <(此处根据顺序和逆序)