分页显示,关于SQL语言

jury 2000-07-13 11:16:00
数据库查找返回记录条数比较多,需要分页显示。
能不能只找出满足某种条件(已排序)的第n至m条记录?如何以SQL描述?谢谢!
...全文
237 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
SuperPower 2001-01-12
  • 打赏
  • 举报
回复
Test
zigzag 2000-07-14
  • 打赏
  • 举报
回复
非要用SQL语句实现吗?
用分页显示的标准做法就很好呀。
每次查出相同的记录集,然后用ADO Recordset的move方法移动一定记录数,就行了。

即使SQL语句能实现,我想也不一定能减轻数据库多少负担。
如果非要用SQL,那存储过程是最好的办法了,效率很高。:)
jury 2000-07-13
  • 打赏
  • 举报
回复
hblinux,你的方法大家都知道。
我想的是在查找是减轻服务器的负担。谢谢你!
华南虎哥 2000-07-13
  • 打赏
  • 举报
回复
我刚针对你这个问题编了一段,时间仓促一点,不知对不对,你先测试一下,有问题再联系:hblinux@163.net
----------------------------------------------------------------
< %
dim n,recordbegin,recordend
'recordbegin 为开始记录,recordend为结尾记录
Set Conn = Server.CreateObject("ADODB.Connection")
Set RS = Server.CreateObject("ADODB.RecordSet")
sql = "SELECT * FROM message order by ID DESC"
'查询所有帖子,并按帖子的ID倒序排列
Conn.Open "bbs"
RS.open sql,Conn,1,1
If RS.RecordCount=0 then
response.write "< P>< center>对不起,数据库中没有相关信息!< /center>< /P>"
else
RS.PageSize =Rs.recordcount '设定PageSize属性的值
Response.Write "< CENTER>"
Response.Write "< P>< font color='Navy'>< B>数 据 库 查 询 结 果:< /B>"
Response.Write "(共有"&RS.RecordCount &"条符合条件的信息,显示"&recordbegin&"-"&recordend&")< /font>< /p>"
Response.Write "< TABLE WIDTH=600 BORDER=1 CELLPADDING=4 CELLSPACING=0 BGCOLOR=#FFFFFF>"
Response.Write "< TR BGCOLOR=#5FB5E2>< FONT SIZE=2>< TD>< B>主 题< /B>< /TD>< TD>< B>用 户< /B>< /TD>< TD>< B>Email< /B>< /TD>< TD>< B>发 布 日 期< /B>< /TD>< /FONT>< TR BGCOLOR=#FFFFFF>"
Do while not (RS is nothing)
RowCount = RS.PageSize
n=0
Do While Not RS.EOF and rowcount > 0
if (n>recordbegin)and(n<recordend) then
Response.Write "< TR BGCOLOR=#FFFFFF>"
%>
< TD>< span style="font-size:9pt">< A href='view.asp?key=< % =RS("ID")%>'>< % =RS("subject")%>< /A>< /span>< /td>
< TD>< span style="font-size:9pt">< % =RS("name")%>< /A>< /span>< /td>
< TD>< span style="font-size:9pt">< a href="mailto:< % =RS("email")%>">< % =RS("email")%>< /a>< /span> < /TD>
< TD>< span style="font-size:9pt">< % =RS("postdate")%>< /span> < /td>
< /TR>
< %
end if
RowCount = RowCount - 1
RS.MoveNext
n=n+1
Loop
set RS = RS.NextRecordSet
Loop
end if
Conn.Close
set rs = nothing
set Conn = nothing
%>
< /TABLE>
< FORM METHOD=GET ACTION="list.asp">
< INPUT TYPE="HIDDEN" NAME="pageno" VALUE="< % =PageNo %>">
< %
if PageNo > 1 Then
response.write "< INPUT TYPE=SUBMIT NAME='ScrollAction' VALUE=' 上一页 '>"
end if
if RowCount = 0 and PageNo < >Total then
response.write "< INPUT TYPE=SUBMIT NAME='ScrollAction' VALUE=' 下一页 '>"
end if
response.write "< /FORM>"
End if
%>
< % End Sub %>
----------------------------------------------------------------
jury 2000-07-13
  • 打赏
  • 举报
回复
比如:
SELECT UnitsInStock, ProductID, ProductName,Country
FROM Northwind.dbo.Products
WHERE Country="CHINA"
ORDER BY ProductID
有100条,我要显示其中第30-50条,如何描述?THANKS!



wumou 2000-07-13
  • 打赏
  • 举报
回复
store proc
leslielu 2000-07-13
  • 打赏
  • 举报
回复
如果你排序有key 的话

SELECT UnitsInStock, ProductID, ProductName
FROM Northwind.dbo.Products
WHERE UnitsInStock BETWEEN 15 AND 25
ORDER BY UnitsInStock


wzs 2000-07-13
  • 打赏
  • 举报
回复
我对你假设的这一语句作了一个修改不知这样如何,(说明:如果在段当中有一个无重复的INDEXQ象ACCESS中它有一个自动的字段叫“ID”是INT类型你就可以根据它来做如下:)
SELECT UnitsInStock, ProductID, ProductName,Country
FROM Northwind.dbo.Products
WHERE Country="CHINA" and id>=30 and id<=50 ORDER BY ProductID
jury 2000-07-13
  • 打赏
  • 举报
回复
????

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧