ACCESS数据库分页的SQL语句

/**************************************************************/

  作者:王力猛(网名:wallimn、邮件:wallimn@sohu.com)
  博客:http://blog.csdn.net/wallimn
  时间:2007-09-10(2008-10-04修改)
  声明:此文欢迎转载,转载请保留本人信息。呵呵。更多文章,请访问我的博客。

/**************************************************************/

  以前用ORACLE时,分页使用ROWNUM做条件就可以了,不管效率如何,反正实现起来比较容易。
  那么ACCESS如何实现分页功能呢?看了些资料说得有些复杂,要写好些代码,我想到一个好方法,来跟大家分享,也就是一个SQL语句:
select top 15 * from YOURTABLE where ID not in(select top 15 ID from YOURTABLE order by ID desc) order by ID desc
稍解释一下,15呢是每页的行数,YOURTABLE是表名,ID是表中主键字段(当然你也可以用别的),我上面的SQL语句,是取出第二页(第二个15条)记录。想变页码,只要把后面的15变成相应的倍数就可以了。
  用这种方式,结合不带分页功能的DataRepeater插件,我三下五除二就写好的记事本程序。不要笑话我,我的.NET的新手,先写这个练练手。
  如果有人感兴趣,请留言,我可以把代码贴出来。

  请注意:

  如果取第一个15条记录,SQL语句不能这样写:

  select top 15 * from YOURTABLE where ID not in(select top0 ID from YOURTABLE order by ID desc) order by ID desc

  这样写会报错。直接写成:

  select top 15 * from YOURTABLE order by ID desc

  如果要加限制条件,可以这样写:

  select top 15 * from YOURTABLE where ID not in(select top15 ID from YOURTABLE whereNAME='wallimn'order by ID desc) andNAME='wallimn' order by ID desc

  

/**************************************************************/

  作者:王力猛(网名:wallimn、邮件:wallimn@sohu.com)
  博客:http://blog.csdn.net/wallimn
  时间:2007-09-10(2008-10-04修改)
  声明:此文欢迎转载,转载请保留本人信息。呵呵。更多文章,请访问我的博客。

/**************************************************************/

  作者:王力猛(网名:wallimn、邮件:wallimn@sohu.com)
  博客:http://blog.csdn.net/wallimn
  时间:2007-09-10(2008-10-04修改)
  声明:此文欢迎转载,转载请保留本人信息。呵呵。更多文章,请访问我的博客。

/**************************************************************/

  以前用ORACLE时,分页使用ROWNUM做条件就可以了,不管效率如何,反正实现起来比较容易。
  那么ACCESS如何实现分页功能呢?看了些资料说得有些复杂,要写好些代码,我想到一个好方法,来跟大家分享,也就是一个SQL语句:
select top 15 * from YOURTABLE where ID not in(select top 15 ID from YOURTABLE order by ID desc) order by ID desc
稍解释一下,15呢是每页的行数,YOURTABLE是表名,ID是表中主键字段(当然你也可以用别的),我上面的SQL语句,是取出第二页(第二个15条)记录。想变页码,只要把后面的15变成相应的倍数就可以了。
  用这种方式,结合不带分页功能的DataRepeater插件,我三下五除二就写好的记事本程序。不要笑话我,我的.NET的新手,先写这个练练手。
  如果有人感兴趣,请留言,我可以把代码贴出来。

  请注意:

  如果取第一个15条记录,SQL语句不能这样写:

  select top 15 * from YOURTABLE where ID not in(select top0 ID from YOURTABLE order by ID desc) order by ID desc

  这样写会报错。直接写成:

  select top 15 * from YOURTABLE order by ID desc

  如果要加限制条件,可以这样写:

  select top 15 * from YOURTABLE where ID not in(select top15 ID from YOURTABLE whereNAME='wallimn'order by ID desc) andNAME='wallimn' order by ID desc

  

/**************************************************************/

  作者:王力猛(网名:wallimn、邮件:wallimn@sohu.com)
  博客:http://blog.csdn.net/wallimn
  时间:2007-09-10(2008-10-04修改)
  声明:此文欢迎转载,转载请保留本人信息。呵呵。更多文章,请访问我的博客。

/**************************************************************/

你可能感兴趣的:(Access)