📄 50035.htm
字号:
<link href="./dzs_cs.css" rel="stylesheet" type="text/css" /><table width="96%" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td> </td> </tr> <tr> <td height="24" align="center" valign="bottom" class="d_font3">利用标准SQL语句实现查询记录分页</td> </tr> <tr> <td height="3" bgcolor="#E3E3E3"></td> </tr> <tr> <td> </td> </tr> <tr> <td class="d_font4"><P>在绝大多数的应用中,返回大量的符合条件的记录是司空见惯的,最典型的莫过于搜索了。在搜索的应用中,用户给出搜索条件,服务器查出符合条件的记录。但往往搜索会返回大量的数据记录,如果在网页中,往往是通过分页的方式来实现,页面提供诸如上一页,下一页等等按钮来实现分页。 </P>
<P>现在主要有以下几中方式来实现分页: </P>
<P>1.EJB的Find方法 <BR>2.在显示第一页前将所有的记录放在collection对象中,后续的各页都在内存中取。 <BR>3.每一页都到数据库作一次重复的查询,然后将符合条件的记录显示出来。 <BR>4.保存前几页的搜索结果在内存中(经常使用到的),后续的记录(这些数据是多数用户都没有耐心看的)再通过连数据库取得。 <BR>5.其他各种cache机制。 </P>
<P>我们可以根据实际情况来选择适合自己的方法,我给大家介绍一个通过标准的SQL语句来得到符合条件的数据。如从第10到20条的符合条件(where语句中的)的记录。通过这种方法取得记录有一个必要条件,必须有一个能够标识记录顺序的字段,如id,time等等。下面我为大家演示一个例子: </P>
<P>查询t_table表中所有记录第10到20条,按id排序。 </P>
<P>SQL语句为: </P>
<P>
<TABLE cellSpacing=0 borderColorDark=#ffffff cellPadding=2 width=400 align=center borderColorLight=black border=1>
<TBODY>
<TR>
<TD class=code bgColor=#e6e6e6><PRE>SELECT * FROM t_table t1 WHERE (SELECT count(*) FROM t_table t2 <BR> WHERE t2.id < t1.id ) > = 10 AND (SELECT count(*) <BR> FROM t_table t2 WHERE t2.id < t1.id ) < 20</PRE></TD></TR></TBODY></TABLE></P>
<P>又如查询t_table表中key='123'第10到20条的记录,按id排序。 </P>
<P>
<TABLE cellSpacing=0 borderColorDark=#ffffff cellPadding=2 width=400 align=center borderColorLight=black border=1>
<TBODY>
<TR>
<TD class=code bgColor=#e6e6e6><PRE>SELECT * FROM t_table t1 WHERE (SELECT count(*) FROM t_table t2 <BR> WHERE t2.id < t1.id AND t2.key = '123') > = 10 <BR> AND (SELECT count(*) FROM t_table t2 <BR> WHERE t2.id < t1.id AND t2.key = '123') < 20 <BR> AND t1.key = '123'</PRE></TD></TR></TBODY></TABLE></P>
<P>当然条件中的id可以换为任何能标识记录顺序的字段。</P>
<P><FONT size=4>【相关文章】</FONT></P>
<UL type=disc>
<LI><A href="http://database.51cto.com/art/200704/44244.htm" target=_blank><U><FONT color=blue>Microsoft的优化SQL方法</FONT></U></A></LI></UL>
<UL type=disc>
<LI><A href="http://database.51cto.com/art/200703/44042.htm" target=_blank><U><FONT color=blue>SQL Server SQL语句调优技巧</FONT></U></A></LI></UL>
<UL type=disc>
<LI><A href="http://developer.51cto.com/art/200703/43792.htm" target=_blank><U><FONT color=blue>防范SQL注入攻击的新办法</FONT></U></A></LI></UL>
<DIV align=right>【责任编辑:<A class=ln href="mailto:sunsj@51cto.com">火凤凰</A> TEL:(010)68476606-8007】</DIV></td> </tr> <tr> <td class="d_font4"> </td> </tr> </table>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -