[DB]mysql 及sql server2005下实现分页效果的sql语句

简要做一下总结:
      为实现类似top的功能,我们在SQL Server中和MySQL中使用到的SQL语句是不同的。
      1、在SQL Server中,我们使用  select top N * from tablename来查询tablename表中前N条记录。

根据所给变量的不同还有其他方法(但这里是找出第M+1条记录开始的N条记录)。
      2、在MySQL中,我们则使用select * from tablename limit M,N 来实现相似的效果,其中M表示从第M+1条记录开始,N表示返回N条记录。
      例如:从uses表中取出第四条到第六条这三条记录,我们就可以这样写:
1、select top 3 * from users where userID not in (select top 3 userID from users order by id) order by id
2、select * from users limit 3,3

在项目中出现的:

// 将SQL语句转换为特定数据库的定位行集SQL语句

int startRow = (page - 1) * getRowsPerPage() + 1;
int rows = this.getRowsPerPage();

1。String pageSql = sql + " limit "+(startRow - 1) + ","+rows;
2。String pageSql ="select top "+rows+" * from ("+sql+")a where id not in (select top "+(startRow - 1)+" id from ("+sql+")a order by id) order by id";

select top 10 * from (SELECT * FROM tablename)a where id not in (select top 0 id from (SELECT * FROM tablename)a order by id) order by id

原文地址:https://www.cnblogs.com/wanping/p/2867001.html