32、MySQL 教程 - MySQL 高级查询-limit子句

本篇来学习limit子句,这个知识点在面试或者笔试过程经常遇到。Limit子句是一种限制结果的语句,通常是限制数量。本篇就来学习limit两种使用方式。

只用来限制长度(数据量):limit数据量;

举例:查询学生表中前两条记录

我们本来有6条学生记录,使用limit 2就只查询前面两条记录。

 

限制起始位置,限制数量:limit起始位置,长度;

举例:还是和上面一样,查询前面两个学生记录,看看有什么区别。

 

上面第二种写法,起始位置是从0开始的,所以结果是一样的。下面我们来查询从第三个记录开始,长度限制为3.

 

由于起始位置是从0开始,所以第三条记录的起始位置就是2,长度为3,就是查询结果限制为3条。这种场景,在实际项目中,最常见的使用场景就是列表分页显示。例如web系统有一个列表,默认一页显示20条记录,第21条就采取分页方式,这种方式,主要能为用户节省查询时间,提高服务器的响应效率,减少资源浪费。

这里简单提下,前端页面分页在数据库层面查询的实现是这样的,用户只需要点击页码,例如有1,2,3,4这样的页面菜单,而对于服务器来讲,会根据用户选择的页码来获取不同的数据,这个limit的语法是这样的:limit offset,length;

Length:每页显示的数量,一般基本不变,一般页面有20,40,80等

0fferset:计算公式是这样的:offerset =(页码-1)*每页显示数量。

这里再举例一个limit的例子,笔试中经常让写,成绩最高的前5名,或者工资最多的前5名。这里我们来查询出学生表里面身高最高的前3名。

 

分析:我们肯定不能直接用limit 3,这个是默认前面3条记录,但是不代表是身高最高的3个,所以,我们需要使用身高字段排序之后再使用limit 3才能得到答案。