SQL语句中limit与offset的区别

SQL查询语句中的 limit 与 offset 的区别:

limit y 分句表示: 读取 y 条数据

limit x, y 分句表示: 跳过 x 条数据,读取 y 条数据

limit y offset x 分句表示: 跳过 x 条数据,读取 y 条数据

比如分页获取数据:

第1页: 从第0个开始,获取20条数据

select * from testtable limit 0, 20; 
select * from testtable limit 20 offset 0;  

第2页: 从第20个开始,获取20条数据

select * from testtable limit 20, 20; 
select * from testtable limit 20 offset 20;  

第3页: 从第40个开始,获取20条数据

select * from testtable limit 40, 20;  
select * from testtable limit 20 offset 40;   

在编程过程中,y一般用pagesize表示,代表每一页读取多少条数据,x一般用pagenumber表示,比如通过gin.Context获取当前页page,然后pagenumber=(page-1)*pagesize;程序如下所示:

tagService := tag_service.Tag{
        Name:     name,
        State:    state,
        PageSize: setting.AppSetting.PageSize,
        PageNum:  util.GetPage(c),
    }
//
// 分页页码的获取方法
func GetPage(c *gin.Context) int{
    result:=0
    page,_:=com.StrTo(c.Query("page")).Int()
    if page>0{
        result=(page-1)*setting.AppSetting.PageSize
    }
    return result
}

你可能感兴趣的:(SQL语句中limit与offset的区别)