当数据表中有上万条数据时,一次性查询出表中的全部数据会降低数据返回的速度,同时给数据库服务器造成很大的压力。这时就可以用 LIMIT 关键字来限制查询结果返回的条数。

LIMIT 是 MySQL 中的一个特殊关键字,用于指定查询结果从哪条记录开始显示,一共显示多少条记录。

LIMIT 关键字有 3 种使用方式,即指定初始位置、不指定初始位置以及与 OFFSET 组合使用。

指定初始位置

LIMIT 关键字可以指定查询结果从哪条记录开始显示,显示多少条记录。

LIMIT 指定初始位置的基本语法格式如下:

LIMIT 初始位置,记录数

其中,“初始位置”表示从哪条记录开始显示;“记录数”表示显示记录的条数。第一条记录的位置是 0,第二条记录的位置是 1。后面的记录依次类推。

注意:LIMIT 后的两个参数必须都是正整数。

例 1
在 tb_students_info 表中,使用 LIMIT 子句返回从第 4 条记录开始的行数为 5 的记录,SQL 语句和运行结果如下。

mysql> SELECT * FROM tb_students_info LIMIT 3,5;
+----+-------+---------+------+------+--------+------------+
| id | name  | dept_id | age  | sex  | height | login_date |
+----+-------+---------+------+------+--------+------------+
|  4 | Jane  |       1 |   22 | F    |    162 | 2016-12-20 |
|  5 | Jim   |       1 |   24 | M    |    175 | 2016-01-15 |
|  6 | John  |       2 |   21 | M    |    172 | 2015-11-11 |
|  7 | Lily  |       6 |   22 | F    |    165 | 2016-02-26 |
|  8 | Susan |       4 |   23 | F    |    170 | 2015-10-01 |
+----+-------+---------+------+------+--------+------------+

由结果可以看到,该语句返回的是从第 4 条记录开始的之后的 5 条记录。LIMIT 关键字后的第一个数字“3”表示从第 4 行开始(记录的位置从 0 开始,第 4 行的位置为 3),第二个数字 5 表示返回的行数。

不指定初始位置

LIMIT 关键字不指定初始位置时,记录从第一条记录开始显示。显示记录的条数由 LIMIT 关键字指定。

LIMIT 不指定初始位置的基本语法格式如下:

LIMIT 记录数

其中,“记录数”表示显示记录的条数。如果“记录数”的值小于查询结果的总数,则会从第一条记录开始,显示指定条数的记录。如果“记录数”的值大于查询结果的总数,则会直接显示查询出来的所有记录。

例 2
显示 tb_students_info 表查询结果的前 4 行,SQL 语句和运行结果如下。

mysql> SELECT * FROM tb_students_info LIMIT 4;
+----+-------+---------+------+------+--------+------------+
| id | name  | dept_id | age  | sex  | height | login_date |
+----+-------+---------+------+------+--------+------------+
|  1 | Dany  |       1 |   25 | F    |    160 | 2015-09-10 |
|  2 | Green |       3 |   23 | F    |    158 | 2016-10-22 |
|  3 | Henry |       2 |   23 | M    |    185 | 2015-05-31 |
|  4 | Jane  |       1 |   22 | F    |    162 | 2016-12-20 |
+----+-------+---------+------+------+--------+------------+

结果中只显示了 4 条记录,说明“LIMIT 4”限制了显示条数为 4。

例 3
显示 tb_students_info 表查询结果的前 15 行,SQL 语句和运行结果如下。

mysql> SELECT * FROM tb_students_info LIMIT 15;
+----+--------+---------+------+------+--------+------------+
| id | name   | dept_id | age  | sex  | height | login_date |
+----+--------+---------+------+------+--------+------------+
|  1 | Dany   |       1 |   25 | F    |    160 | 2015-09-10 |
|  2 | Green  |       3 |   23 | F    |    158 | 2016-10-22 |
|  3 | Henry  |       2 |   23 | M    |    185 | 2015-05-31 |
|  4 | Jane   |       1 |   22 | F    |    162 | 2016-12-20 |
|  5 | Jim    |       1 |   24 | M    |    175 | 2016-01-15 |
|  6 | John   |       2 |   21 | M    |    172 | 2015-11-11 |
|  7 | Lily   |       6 |   22 | F    |    165 | 2016-02-26 |
|  8 | Susan  |       4 |   23 | F    |    170 | 2015-10-01 |
|  9 | Thomas |       3 |   22 | M    |    178 | 2016-06-07 |
| 10 | Tom    |       4 |   23 | M    |    165 | 2016-08-05 |
+----+--------+---------+------+------+--------+------------+

结果中只显示了 10 条记录。虽然 LIMIT 关键字指定了显示 15 条记录,但是查询结果中只有 10 条记录。因此,数据库系统就将这 10 条记录全部显示出来。

带一个参数的 LIMIT 指定从查询结果的首行开始,唯一的参数表示返回的行数,即“LIMIT n”与“LIMIT 0,n”返回结果相同。带两个参数的 LIMIT 可返回从任何位置开始指定行数的数据。

LIMIT和OFFSET组合使用

LIMIT 可以和 OFFSET 组合使用,语法格式如下:

LIMIT 记录数 OFFSET 初始位置

参数和 LIMIT 语法中参数含义相同,“初始位置”指定从哪条记录开始显示;“记录数”表示显示记录的条数。

例 4
在 tb_students_info 表中,使用 LIMIT OFFSET 返回从第 4 条记录开始的行数为 5 的记录,SQL 语句和运行结果如下。

mysql> SELECT * FROM tb_students_info LIMIT 5 OFFSET 3;
+----+-------+---------+------+------+--------+------------+
| id | name  | dept_id | age  | sex  | height | login_date |
+----+-------+---------+------+------+--------+------------+
|  4 | Jane  |       1 |   22 | F    |    162 | 2016-12-20 |
|  5 | Jim   |       1 |   24 | M    |    175 | 2016-01-15 |
|  6 | John  |       2 |   21 | M    |    172 | 2015-11-11 |
|  7 | Lily  |       6 |   22 | F    |    165 | 2016-02-26 |
|  8 | Susan |       4 |   23 | F    |    170 | 2015-10-01 |
+----+-------+---------+------+------+--------+------------+

由结果可以看到,该语句返回的是从第 4 条记录开始的之后的 5 条记录。即“LIMIT 5 OFFSET 3”意思是获取从第 4 条记录开始的后面的 5 条记录,和“LIMIT 3,5”返回的结果相同。

4、 LIMIT:限制查询结果的条数相关推荐

  1. MySQL数据库——MySQL LIMIT:限制查询结果的条数

    当数据表中有上万条数据时,一次性查询出表中的全部数据会降低数据返回的速度,同时给数据库服务器造成很大的压力.这时就可以用 LIMIT 关键字来限制查询结果返回的条数. LIMIT 是 MySQL 中的 ...

  2. mysql查询优化count(*)-查询记录总条数(二)

    前文提到查询记录总条数有时候会使用到where来限定查询范围. 从优化原则来说,where可能会降低效率. 但是如果where设定的合理,符合一定条件,也可以实现查询优化效果. 如果条件是索引列,那么 ...

  3. 各种数据库的查询结果限制条数的SQL语法

    MySQL MySQL数据库中提供了limit关键字用来限制返回的结果集,语法为"Limit 需要返回记录的首行行数,要返回记录的条数",例如: SELECT * FROM T_E ...

  4. SQL使用分组查询并计算条数

    sql分组查询使用COUNT计算每一组的条数并添加条件 SELECTf.jxlx,COUNT(*) AS 全部,COUNT( CASE WHEN ( f.zt = 1 ) THEN jxlx END ...

  5. mybatis一对多查询Pagehelper分页条数不对

    问题:在写mybatis一对多的时候用到了Pagehelper进行分页,然后发现确实能分页,但是展示的条数不对,后来研究了发现原来Pagehelper插件在一对多查询的时候默认的是对多的一方进行的分页 ...

  6. mongodb 高级查询 统计记录条数

    使用count()方法查询表中的记录条数,例如,下面的命令查询表users的记录数量: db.users.find().count();

  7. 查询主表每条数对应的最新一条日志 group

    1.情景:A表为主表,B表为日志表 A:id,order_no,create_time B:id,orderr_no,log_content 2.查询A表中每个订单的最新一条日志 select * f ...

  8. mysql查询优化count(*)-查询记录总条数(一)

    计算表记录总量最直接的方法就是使用count() 比如:select count(*) from 表名; 也有人喜欢这么写: select count(字段名) from 表名; 这两种写法都可以得到 ...

  9. oracle 查询每组条数,Oracle SQL查询:根据时间检索每组的最新值

    这是一个完整的,经过测试的例子. CREATE TABLE tbl1 (ID NUMBER, dt DATE, quantity NUMBER); DELETE FROM tbl1; insert i ...

最新文章

  1. 【目标检测】yolo系列:从yolov1到yolov5之YOLOv5训练自己数据集(v6.0)
  2. 美国国家科学院发布:材料有哪些研究前沿?
  3. DHCP常用配置文件解析
  4. java高并发(一)导学
  5. 使用croc命令在Linux系统电脑之间传输文件和文件夹
  6. pytorch的backward参数
  7. redis scan 效率太慢_阿里云的redis规范
  8. 拓端tecdat|Excel实例:数组公式和函数
  9. tp3.2 缓存cache
  10. CustomValidator控件用法
  11. 预付费售电管理系统基础知识
  12. apereo cas开发_CAS 之 Apereo CAS 简介(一)
  13. 新浪微博登录html代码,新浪微博登录仿DiscuzX1.5论坛QQ登录样式 - YangJunwei
  14. 电视与电脑连接html线,电视机与电脑连接的方法
  15. java对接天眼查接口,天眼查提供案例方法过期最新案例
  16. 微信账户体系科普:什么是UnionId、OpenId与wxopenid?
  17. 中国化肥产业发展现状及趋势分析,化肥产能过剩情况得到缓解「图」
  18. 漫画人工智能:人工智能简史
  19. python小作业8代码(列表的遍历与嵌套)
  20. django实现qq一键登录(qq互联)

热门文章

  1. 成功解决ImportError: [joblib] Attempting to do parallel computing without protecting your import on a sy
  2. TF之TF flags:TF flags(命令行解析)的简介、安装、使用方法之详细攻略
  3. 快速提高CSDN访问量 - 附脚本初代机
  4. 决策树-特征属性选择划分
  5. (转)Spring定时任务的几种实现
  6. 绝大部分项目都是跟金融创新、互联网、移动互联网、社区经济、分享经济、互联网金融有关...
  7. TJA1050只能RX不能TX
  8. Linux mktime 源代码简析
  9. 单列模式(懒汉)测试代码
  10. Qt实现UDP通信简例