用标准的SQL语句实现查询记录的分页
2012-07-03 10:45
597 查看
在绝大多数的应用中,返回大量的符合条件的记录是司空见惯的,最典型的莫过于搜索了。在搜索的应用中,用户给出搜索条件,服务器查出符合条件的记录。但往往搜索会返回大量的数据记录,如果在网页中,往往是通过分页的方式来实现,页面提供诸如上一页,下一页等等按钮来实现分页。
现在主要有以下几中方式来实现分页:
1.EJB的Find方法。
2.在显示第一页前将所有的记录放在collection对象中,后续的各页都在内存中取。
3.每一页都到数据库作一次重复的查询,然后将符合条件的记录显示出来。
4.保存前几页的搜索结果在内存中(经常使用到的),后续的记录(这些数据是多数用户都没有耐心看的)再通过连数据库取得。
5.其他各种cache机制。
我们可以根据实际情况来选择适合自己的方法,可以根据不用数据的语法函数特性选择特定某个数据库的语句,但是这里我给大家介绍一个通过标准的SQL语句来得到符合条件的数据查询,这样就可以在不同的数据库中移植。
如从第10到20条(包括10和20)的符合条件(where语句中的)的记录。通过这种方法取得记录有一个必要条件,必须有一个能够标识记录顺序的字段,如id,time等等。下面我为大家演示一个例子:
查询t_table表中所有记录第10到20条(包括10和20),按id排序。
SQL语句为:
又如查询t_table表中key='123'第10到20条的记录,按id排序。
现在主要有以下几中方式来实现分页:
1.EJB的Find方法。
2.在显示第一页前将所有的记录放在collection对象中,后续的各页都在内存中取。
3.每一页都到数据库作一次重复的查询,然后将符合条件的记录显示出来。
4.保存前几页的搜索结果在内存中(经常使用到的),后续的记录(这些数据是多数用户都没有耐心看的)再通过连数据库取得。
5.其他各种cache机制。
我们可以根据实际情况来选择适合自己的方法,可以根据不用数据的语法函数特性选择特定某个数据库的语句,但是这里我给大家介绍一个通过标准的SQL语句来得到符合条件的数据查询,这样就可以在不同的数据库中移植。
如从第10到20条(包括10和20)的符合条件(where语句中的)的记录。通过这种方法取得记录有一个必要条件,必须有一个能够标识记录顺序的字段,如id,time等等。下面我为大家演示一个例子:
查询t_table表中所有记录第10到20条(包括10和20),按id排序。
SQL语句为:
SELECT * FROM t_table t1 WHERE (SELECT count(*) FROM t_table t2 WHERE t2.id <= t1.id ) >= 10 AND (SELECT count(*) FROM t_table t2 WHERE t2.id <= t1.id ) <= 20
又如查询t_table表中key='123'第10到20条的记录,按id排序。
SELECT * FROM t_table t1 WHERE (SELECT count(*) FROM t_table t2 WHERE t2.id <= t1.id AND t2.key = '123') >= 10 AND (SELECT count(*) FROM t_table t2 WHERE t2.id <= t1.id AND t2.key = '123') <= 20 AND t1.key = '123'当然条件中的id可以换为任何能表识记录顺序的字段。
相关文章推荐
- 【转】用标准的SQL语句实现查询记录分页
- 用标准的SQL语句实现查询记录分页
- 利用标准的SQL语句实现查询记录分页
- 利用标准SQL语句实现查询记录分页
- 用标准的SQL语句实现查询记录分页
- 用标准的SQL语句实现查询记录分页
- 用标准的SQL语句实现查询记录分页
- 使用传入的总记录数实现一条sql语句完成分页查询
- SQL 分页查询语句大全即(查找第N到M条记录的方法)
- 在SQL Server中通过SQL语句实现分页查询
- MySql实现分页查询的SQL,mysql实现分页查询的sql语句
- 通过sql语句查询实现分页
- MySql实现分页查询的SQL,mysql实现分页查询的sql语句
- 在SQL Server中通过SQL语句实现分页查询
- MySql实现分页查询的SQL,mysql实现分页查询的sql语句
- [MS SQL]SQL语句查询每个分组的前N条记录的实现方法
- 通过sql语句查询实现分页
- 实现用SQL语句分页查询操作hibernate
- 【转】在SQL Server中通过SQL语句实现分页查询
- SQL语句查询每个分组的前N条记录的实现方法