# 查询结果分页 limit

在查询结果非常多的情况下,如果每次查询都把所有数据查询出来,那么将是非常耗费服务器资源的。但是实际使用中这是不必要的,你可能只需要10、20条数据或者是分批次查询数据。

# 限制返回前面的n条数据

select * from user limit 10

上面的sql是指的查询user表数据,查询结果可能有20条数据,返回前面的10条数据。这里的n就是10

通常limit和order by联合使用,用户确定查询的是哪些数据。

select * from user order by age desc limit 10

上面的sql是指的查询user表数据,查询结果可能有20条数据, 这些数据根据年龄倒序排序,返回前面的10条数据。 也就是查询年龄最大的10个人的数据。

# 跳过k条数据返回第k+1条数据开始的n条数据

select * from user order by age desc limit 20,10

上面的sql语句的理解: 查询所有用户,根据年龄降序排序,返回地21条数据开始的10条数据

在实际使用中通常用于页面加载数据分页,比如我们现在查询到底第三页数据了,那么page=3, 每页数据返回10条数据,也就是pageSize=10

这里我们用下面公式 k = (page-1)*pageSize = 20, n=pageSize=10 所以才有了上面的sql中的:limit 20,10 这代表查询的第三页数据。

还有另外一种写法

select * from user order by age desc limit 10 offset 20

这种两种写法是完全相同的语义