使用背景

  • 查询返回的记录太多了,查看起来很不方便
  • 表里有4条数据,我们只想要显示第2、3条数据

limit x, y;
解读:
x表示偏移量,(非负整数)表示从第(x + 1)条数据开始显示。
y表示每页显示的记录数。

#需求:每页显示pageSize条记录,此时显示第pageNo页: #公式:LIMIT (pageNo-1) * pageSize,pageSize;

  1. #mysql使用limit实现数据的分页显示
  2. # 每页显示4条记录,此时显示第1页
  3. SELECT id, `name`, age, sport
  4. FROM employee
  5. LIMIT 0,4;
  6. # 0是偏移量,从第一条开始显示
  7. # 4是显示4条数据

image.pngimage.png

  1. #mysql使用limit实现数据的分页显示
  2. # 每页显示4条记录,此时显示第2页
  3. SELECT id, `name`, age, sport
  4. FROM employee
  5. LIMIT 4,4;
  6. # 第一个4是偏移量,从第一条开始显示
  7. # 第二个4是显示4条数据

image.png

WHERE … ORDER BY …LIMIT 声明顺序

LIMIT的格式: 严格来说:LIMIT 位置偏移量,条目数

结构”LIMIT 0,条目数” 等价于 “LIMIT 条目数”(从第一条数据开始显示)

  1. # LIMIT的格式: 严格来说:LIMIT 位置偏移量,条目数
  2. # 结构"LIMIT 0,条目数" 等价于 "LIMIT 条目数"
  3. SELECT id, `name`, age, sport
  4. FROM employee
  5. WHERE age > 17 || id > 2
  6. ORDER BY age
  7. #LIMIT 0,4;
  8. # 从第一条数据开始取可以只写条数
  9. LIMIT 4;

image.png

  1. # 法一:
  2. # 只显示第二条和第三条数据
  3. SELECT id, `name`, age, sport
  4. FROM employee
  5. LIMIT 1,2;
  6. # 法二:
  7. # MySQL8.0新特性:LIMIT ... OFFSET ...
  8. SELECT id, `name`, age, sport
  9. FROM employee
  10. LIMIT 2 OFFSET 1;

image.pngimage.png

  1. #练习:表中年龄最大的人员信息
  2. SELECT id, `name`, age, sport
  3. FROM employee
  4. ORDER BY age DESC
  5. limit 0,1

image.png
注意LIMIT子句必须放在整个SELECT语句的最后!

使用LIMIT的好处

约束返回结果的数量可以减少数据表的网络传输量,也可以提升查询效率。如果我们知道返回结果只有1条,就可以使用LIMIT 1,告诉SELECT语句只需要返回一条记录即可。这样的好处就是SELECT 不需要扫描完整的表,只需要检索到一条符合条件的记录即可返回。