网站建设资讯

NEWS

网站建设资讯

sqlserver分页是,mysql和sqlserver分页的区别

SqlServer分页

分页的原理无非是根据传递的页数和每页行数算出从第几行开始取多少行数据。所以根据你的参数你完全可以任意取数。

目前成都创新互联公司已为上千的企业提供了网站建设、域名、虚拟主机、网站托管、服务器托管、企业网站设计、德江网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

sqlserver分页

sqlserver分页有四种方法,先给大家介绍一种常用的

查看1到3条数据

假如查询每页大小为3,查询第2页的数据就是

如何使用sql语句进行分页操作?

利用SQL语句分页要看你用的什么数据库。

Oracle数据库可以使用ROWNUM或row_number(),例如:Select

*

from

(select

ROWNUM

rn,

t.*

from

table

t)

where

rn

between

11

and

20;

Select

*

from

(select

row_number()

over

(ORDER

BY

col1)

rn,

t.*

from

table

t)

where

rn

between

11

and

20;

SQLServer数据库可以用Top或者row_number()函数,道理同上。

利用SQL分页有局限性,就是针对不同的数据库有不同的写法,所以通常会在应用程序里面做分页通用性比较强。但是对于数据量非常庞大的应用来说,还是用SQL分页比较适合。

sqlserver 2005数据库 怎么进行分页

分两步实现

一、分页的存储过程如下

set ANSI_NULLS ON

set QUOTED_IDENTIFIER ON

go

CREATE PROCEDURE [dbo].[Pagination]

@tblName varchar(255), -- 表名

@strGetFields varchar(1000) , -- 需要返回的列

@fldName varchar(255), -- 排序的字段名

@PageSize int, -- 页尺寸

@PageIndex int , -- 页码

@doCount bit=0, -- 返回记录总数, 非 0 值则返回

@OrderType bit, -- 设置排序类型, 非 0 值则降序

@strWhere varchar(1500) -- 查询条件 (注意: 不要加 where)

AS

declare @strSQL varchar(5000) -- 主语句

declare @strTmp varchar(110) -- 临时变量

declare @strOrder varchar(400) -- 排序类型

if @doCount != 0

begin

if @strWhere !=''

set @strSQL = 'select count(*) as Total from [' + @tblName + '] where ' + @strWhere

else

set @strSQL = 'select count(*) as Total from [' + @tblName + ']'

end

--以上代码的意思是如果@doCount传递过来的不是0,就执行总数统计。以下的所有代码都是@doCount为0的情况

else

begin

if @OrderType != 0

begin

set @strTmp = '(select min'

set @strOrder = ' order by [' + @fldName + '] desc'

end

--如果@OrderType不是0,就执行降序,这句很重要!

else

begin

set @strTmp = '(select max'

set @strOrder = ' order by [' + @fldName + '] asc'

end

if @PageIndex = 1

begin

if @strWhere != ''

set @strSQL = 'select top ' + str(@PageSize) + ' ' + @strGetFields + ' from [' + @tblName + '] where '

+ @strWhere + ' ' + @strOrder

else

set @strSQL = 'select top ' + str(@PageSize) + ' ' + @strGetFields

+ ' from [' + @tblName + '] ' + @strOrder

end

--如果是第一页就执行以上代码,这样会加快执行速度

else

begin

--以下代码赋予了@strSQL以真正执行的SQL代码

set @strSQL = 'select top ' + str(@PageSize) + ' ' + @strGetFields + ' from ['

+ @tblName + '] where [' + @fldName + ']' + @strTmp + '(['+ @fldName + ']) from (select top '

+ str( ( @PageIndex - 1 ) * @PageSize ) + ' ['+ @fldName + '] from [' + @tblName + ']'

+ @strOrder + ') as tblTmp)' + @strOrder

if @strWhere != ''

set @strSQL = 'select top ' + str(@PageSize) + ' ' + @strGetFields + ' from ['

+ @tblName + '] where [' + @fldName + ']' + @strTmp + '(['

+ @fldName + ']) from (select top ' + str( ( @PageIndex - 1 ) * @PageSize ) + ' ['

+ @fldName + '] from [' + @tblName + '] where ' + @strWhere + ' '

+ @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrder

end

end

exec(@strSQL)

二、页面调用部分代码

Function navindex(ByVal PageIndextemp As Integer, ByVal PageSizetemp As Integer, ByVal countint As Integer, ByVal pagename As String) As String

Dim i As Integer

If countint Mod PageSizetemp = 0 Then

i = countint \ PageSizetemp

Else

i = countint \ PageSizetemp + 1

End If

Dim maxi, mini As Integer

Dim navleft, navright, navstrtemp As String

If i 10 Then

maxi = i

mini = 1

Else

maxi = pageindex + 3

mini = pageindex - 3

If mini 1 Then

navleft = "a href=""" pagename "?page=" (mini - 1) """ class=""link_nav_btn""/a "

Else

mini = 1

maxi = 10

End If

If maxi i Then

navright = " a href=""" pagename "?page=" (maxi + 1) """ class=""link_nav_btn""/a"

Else

If i - 10 0 Then

mini = i - 10

Else

mini = 1

End If

maxi = i

End If

End If

For n As Integer = mini To maxi

If n = pageindex Then

navstrtemp = navstrtemp " a href=""" pagename "?page=" n """ class=""link_nav_btn_select""b" n "/b/a"

Else

navstrtemp = navstrtemp " a href=""" pagename "?page=" n """ class=""link_nav_btn""" n "/a"

End If

Next

navstrtemp = navleft navstrtemp navright

Return navstrtemp

End Function

Sub databinds(ByVal tblnametemp As String, ByVal strGetFieldstemp As String, ByVal fldNametemp As String, ByVal PageSizetemp As Integer, ByVal PageIndextemp As Integer, ByVal OrderTypetemp As Short, ByVal strWheretemp As String)

'tblnametemp表名,strGetFieldstemp需要返回的列,fldNametemp排序的字段名,PageSizetemp页尺寸,PageIndextemp页码,OrderTypetemp设置排序类型,strWheretemp查询条件

'总数

cmdTM = New SqlCommand("select count(*) from " tblnametemp " where " strWheretemp, conPubs)

conPubs.Open()

countint = CInt(cmdTM.ExecuteScalar())

conPubs.Close()

'导航

navstr = navindex(PageIndextemp, PageSizetemp, countint, "newshyxh.aspx")

'分页

cmdTM = New SqlCommand("Pagination", conPubs)

cmdTM.CommandType = CommandType.StoredProcedure

'add input

cmdTM.Parameters.Add("@tblName", SqlDbType.VarChar, 255).Value = tblnametemp

cmdTM.Parameters.Add("@strGetFields", SqlDbType.VarChar, 1000).Value = strGetFieldstemp

cmdTM.Parameters.Add("@fldName", SqlDbType.VarChar, 255).Value = fldNametemp

cmdTM.Parameters.Add("@PageIndex", SqlDbType.Int).Value = PageIndextemp

cmdTM.Parameters.Add("@PageSize", SqlDbType.Int).Value = PageSizetemp

cmdTM.Parameters.Add("@OrderType", SqlDbType.Bit).Value = OrderTypetemp

cmdTM.Parameters.Add("@strWhere", SqlDbType.VarChar, 1500).Value = strWheretemp

conPubs.Open()

newsright.DataSource = cmdTM.ExecuteReader()

newsright.DataBind()

conPubs.Close()

End Sub

SQLServer数据库存储过程分页是怎样的

存储过程:create Procedure pname

( @pageIndex int,@pageSize)

as

select * from tableName order by id

offset @pageIndex * pageSize fetch next pageSize rows only

分页:

sqlserver 在2008之前 使用 top 和 not int top 的方式来做分页

2008以后使用 row_number() 函数作为分页关键函数

2012使用 offset 1 fetch next 10 rows only

你问了2个问题,你可以优先把视图,存储过程,触发器等弄明白,分页是查询,在存储过程里可以写复杂的sql文,只是在运行时是预编译和参数化查询防止sql注入

sqlserver 聚合 如何分页

我看没人回答我再上。

-----------------------------

这个用子查询就可以了!如果嵌套很多,证明你的数据库设计很蹩脚。

给你个例子:

----------

SELECT TOP 10

convert(varchar(10),K.ID) as ID,

convert(varchar(20),convert(decimal(18,2),K.SumRealSaleCost)) as SumRealSaleCost,

K.CountRes

from

(

select

ROW_NUMBER() OVER (ORDER BY GetDate()) AS ID,

(sum(M.Sale) over()-sum(M.ReturnSaleCost) over()) as SumRealSaleCost,

count(*) over() as CountRes

from

(

---这里你爱用什么聚合函数就用什么聚合函数,我只用了一个简单的子查询而已!

select

A.Sale,

A.ReturnSaleCost

from ProductStore A

) M

) K

where K.ID ?

--这个排序最好和分页函数一致。

ORDER BY K.Sale DESC

--------------------

最外层为类型转化层

中间是数据逻辑层

最内层就是集合构建层

我这种写法很多人不理解,本人原创。你百度不到!

---------------------

如果LZ数据库有功底的话,加入我的团队吧!数据库聚贤庄


本文标题:sqlserver分页是,mysql和sqlserver分页的区别
标题链接:http://cdweb.net/article/hcdooh.html