SQLServer的分页SQL

来源:互联网 发布:c语言 宏 编辑:程序博客网 时间:2024/06/04 18:24

好忙!今天来了个新的需求:要求在 SQLServer中查询相关信息,由于框架本身是针对Oracle数据库的(相关查询、分页机制都已经写死)无奈只好研究一下SQLServer的分页机制了,其实说白了,就是匹配SQL的问题,说来不怕大家笑话,小弟SQLServer的SQL不会!^_^再加上公司不能上外网,唉~~

更糟糕的是机器上没有SQLServer的客户端,只能用java程序来验证SQL的正确性。郁闷、郁闷、郁闷啊~~~

问问老大,老大说以前写过,(我们老大有个毛病:只要他说以前...基本上就不能指望了!因为那就意味着他不会!)

硬着头皮,写吧:隐约中记得有TOP之类的关键字!

在测试了N遍之后终于有了成效!为了便于自己以后总结,先写在这里:可能各位老大们都不值得一提的东西了,希望大家不要小我哦^_^

例如:每页10条记录,那么首10条记录查询如下

SELECT TOP 10 * FROM TABLENAME WHERE 主键 NOT IN(SELECT TOP 0 主键 FROM TABLENAME ORDER BY 主键)ORDER BY 主键

写成通用的SQL:

String pageSize = 10;//每页显示数

String onPage=1;//当前页数

String sql = "SELECT TOP  " + pageSize +"  *  FROM    tablename   WHERE 主键 NOT IN(SELECT TOP "+(onPage-1)*pageSize +"主键 FROM   tablename  ORDER BY 主键)ORDER BY 主键"

当然,在应用这个SQL之前,我们还是要先获取总的数据条数从而换算出总页数!

好了,先写到这里,如有不对,看了的各位老大,帮小弟指出来!谢谢!