doclist 阅读(9) 评论(0)

空闲时间里用着mysql学习开发测试平台和测试用具,

在公司里将可用的测试平台部署,将数据库换成sqlserver

巴望着能去oracle的公司

 

 

mysql中的分页

limit是mysql的语法
select * from table limit m,n
其中m是指记录开始的index,从0开始,表示第一条记录
n是指从第m+1条开始,取n条。

 


select * from tablename limit 0,5
即取出第1条至第5条,5条记录

 

select * from tablename limit 5,5
即取出第6条至第10条,5条记录

 

sqlserver中分页

第一种:ROW_NUMBER() OVER()方式

select * from ( 
    select *, ROW_NUMBER() OVER(Order by ArtistId ) AS RowId from ArtistModels 
  ) as b

      where RowId between 10 and 20 

select * from ( 
    select *, ROW_NUMBER() OVER(Order by ArtistId ) AS RowId from ArtistModels 
  ) as b

      where RowId between 10 and 20 

  


  ---where RowId BETWEEN 当前页数-1*条数 and 页数*条数---     

 

第二种方式:offset fetch next方式(SQL2012以上的版本才支持:推荐使用 )

select * from user order by 1 desc

offset 4 rows fetch next 5 rows only
                  --order by 1 desc offset 页数 rows fetch next 条数 rows only ----

select * from user order by 1 desc

offset 4 rows fetch next 5 rows only
                  --order by 1 desc offset 页数 rows fetch next 条数 rows only ----

  

 

第三种方式:top not in方式 (适应于数据库2012以下的版本)

select top 3 * from user
where id not in (select top 15 id from ArtistModels)

------where Id not in (select top 条数*页数  ArtistId  from ArtistModels)  

select top 3 * from user
where id not in (select top 15 id from ArtistModels)

------where Id not in (select top 条数*页数  ArtistId  from ArtistModels)  

 

oracle的分页

/*

 * firstIndex:起始索引

 * pageSize:每页显示的数量

 * orderColumn:排序的字段名

 * sql:可以是简单的单表查询语句,也可以是复杂的多表联合查询语句

 */
select * from(select * from(select t.*,row_number() over(order by orderColumn) as rownumber from tablename t) p where p.rownumber>firstIndex) where rownum<=pageSize