⑴ 一条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 语句 分页查询
方法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语句
这里的K不仅仅是个别名的作用,他把 (select *,row_number() over(order BY UserID) rowIndex from userinfo)做为一个表来查询 ,如果不加则作为一个查询结果集,SQL无法再查询结果集上在进行查询
⑷ 如何用sql语句 实现分页查询
分页:一般会把当前页通过get方式传递,PHP通过$_GET['page']接收。
查询:可以从当前乘以每页显示数通过limit来实现分页效果。
//每页显示条数
$pageSize=10;
//当前页
$_GET['page']?$page=1:$page=$_GET['page'];
//开始查询位置
$seat=$page*$pageSize;
//sql语句
$sql="select*fromtablelimit$seat,$pageSize";
//输出数据到view即可
⑸ 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分页查询语句 首页,上一页怎么实现
--假如每页显示条数据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语句 实现分页查询
适用于 SQL Server 2000/2005
SELECT TOP 页大小 *
FROM table1
WHERE id NOT IN
SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id
⑻ sql 分页多条件查询
查询可以用if else 去做。
例如:
sql="select * from ........."
``````````````
xh=request("型号")
······
if xh<>"" then sql=sql+" and 型号='"&xh&"'"
分页可以用
<%TurnPage(rs,20,"型号="&xh&"&其他6个参数·······")%>
<%
Sub TurnPage(ByRef Rs_tmp,PageSize,canshu) 'Rs_tmp 记录集 PageSize 每页显示的记录条数;
Dim TotalPage '总页数
Dim PageNo '当前显示的是第几页
Dim RecordCount '总记录条数
Rs_tmp.PageSize = PageSize
RecordCount = Rs_tmp.RecordCount
TotalPage = INT(RecordCount / PageSize * -1)*-1
PageNo = Request.QueryString ("PageNo")
'直接输入页数跳转;
If Request.Form("PageNo")<>"" Then PageNo = Request.Form("PageNo")
'如果没有选择第几页,则默认显示第一页;
If PageNo = "" then PageNo = 1
If RecordCount <> 0 then
Rs_tmp.AbsolutePage = PageNo
End If
'获取当前文件名,使得每次翻页都在当前页面进行;
Dim fileName,postion
fileName = Request.ServerVariables("script_name")
postion = InstrRev(fileName,"/")+1
'取得当前的文件名称,使翻页的链接指向当前文件;
fileName = Mid(fileName,postion)
response.write "<table border=0 width='100%'><tr> "
If RecordCount = 0 or TotalPage = 1 Then
Response.Write ""
Else
response.write "<td align=left style='font-size:12px'> 总页数:<font color=#ff3333>"&TotalPage&"</font>页"
response.write "当前第<font color=#ff3333>"&PageNo&"</font>页 </td> "
response.write "<td align='right' style='font-size:12px'> "
end if
If RecordCount = 0 or TotalPage = 1 Then
Response.Write ""
Else
response.write "<a href='"&fileName&"?PageNo=1&"&canshu&"'>首页|</a>"
If PageNo - 1 = 0 Then
Response.Write "前页|"
Else
response.write "<a href='"&fileName&"?PageNo="&PageNo-1&"&"&canshu&"'>前页|</a>"
End If
If PageNo+1 > TotalPage Then
Response.Write "后页|"
Else
response.write "<a href='"&fileName&"?PageNo="&PageNo+1&"&"&canshu&"'>后页|</a>"
End If
response.write "<a href='"&fileName&"?PageNo="&TotalPage&"&"&canshu&"'>末页</a>"
End If
response.write "</td></td></tr></table> "
end sub%>
⑼ sql 分页查询 数据库高手请进
请楼主在前台语言中实现。
⑽ 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 页码
只需按照参数传递即可