有时我们会sql语句中采用top限制记录集显示的条数,有时记录集无视top的限制。
下面举例说明:
< %
sql="select top 3 * from [news] order by times desc"
rs.open sql,conn,1,1
do while not rs.eof % >
<%=rs("title")%>
< %
rs.movenext
loop
rs.close
% >
现在我们让新闻(news)表以修改时间(times)降序,显示3条数据(3条标题[title]),这时新闻表中的数据在3条以上,我们认表中的数据有5条,如果最后显示的不是3条数据而是5条数据。
现在我们来找出错误:
1,我们先检查ASP程序代码有没有输出错误,主要是top代码的书写;
2,如果ASP程序代码书写有错误,那错误很可能是发生在排序上。这个错误并不是代码书写错误,而是排序字段在表中是相同的,导致top限制代码被忽略。
解决方法有3中:
1,修改排序字段在数据库中的数据(这个解决方法更具数据的具体情况采用);
2,在原有的排序后在加上一个排序;
sql="select top 3 * from [news] order by times desc,id desc"
3,不采用top的限制,采用变量的减少来实现显示条数的限制;
< %
sql="select top 3 * from [news] order by times desc"
rs.open sql,conn,1,1
hs=3
While ((hs <> 0) AND (NOT rs.EOF))
% >
< % =rs("title") % >
< %
hs=hs-1
rs.MoveNext
Wend
rs.close
% >
hs为一个变量,名称可以自己修改,hs=3 是规定显示3条数据。