今天看了几篇文章,深受启发,其实我们一直都在找更好的数据分页方法,不过都很少从SQL出发(反正我是很少了),不过用SQL实现分页,可以更加的简单,而且很灵活,这样我们就可以直接将数据绑定进行输出了。
要实现这个功能只需要下面这句SQL:
SELECT * FROM [select top 2 * from (select top 4 * from forumdata order by public_id desc)temp1 order by public_id asc]. AS temp2 ORDER BY public_id DESC;
让我进行简单的解释一下。2是每页所要显示的数据行,这里假设是2行,而4则是每页行数乘于第n页的结果(2×2),这里就是指第二页了。forumdata是查询的数据表,public_id是排序的字段名,我们就是根据它进行分页的。
下面我们看看它如何工作,看最里面那句:select top 4 * from forumdata order by public_id desc,就是将forumdata中的数据按降序排序后输出前4项,然后将它放在temp1这个临时的表中,这里其实是将按public_id排序后的前2页输出了,下面看第二句:select top 2 * from (select top 4 * from forumdata order by public_id desc)temp1 order by public_id asc。我们可以将它写成select top 2 * from temp1 order by public_id asc,就是将前2页升序排序,这样第二页就在最上面了,我们将前2行取出来,放在temp2,这样终于将第二页取出来了!但为了按照原来的排序方式输出,我们又添加了:
SELECT * FROM temp2 ORDER BY public_id DESC,这样就可以降序输出数据了。好了,就这么多了,原理很简单,但功能很不错,可以按照各个字段名排序输出,简单的一句就可以实现分页。
大家不妨将自己好的分页技术拿出来大家分享一下吧。