4、 LIMIT:限制查询结果的条数
当数据表中有上万条数据时,一次性查询出表中的全部数据会降低数据返回的速度,同时给数据库服务器造成很大的压力。这时就可以用 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:限制查询结果的条数相关推荐
- MySQL数据库——MySQL LIMIT:限制查询结果的条数
当数据表中有上万条数据时,一次性查询出表中的全部数据会降低数据返回的速度,同时给数据库服务器造成很大的压力.这时就可以用 LIMIT 关键字来限制查询结果返回的条数. LIMIT 是 MySQL 中的 ...
- mysql查询优化count(*)-查询记录总条数(二)
前文提到查询记录总条数有时候会使用到where来限定查询范围. 从优化原则来说,where可能会降低效率. 但是如果where设定的合理,符合一定条件,也可以实现查询优化效果. 如果条件是索引列,那么 ...
- 各种数据库的查询结果限制条数的SQL语法
MySQL MySQL数据库中提供了limit关键字用来限制返回的结果集,语法为"Limit 需要返回记录的首行行数,要返回记录的条数",例如: SELECT * FROM T_E ...
- SQL使用分组查询并计算条数
sql分组查询使用COUNT计算每一组的条数并添加条件 SELECTf.jxlx,COUNT(*) AS 全部,COUNT( CASE WHEN ( f.zt = 1 ) THEN jxlx END ...
- mybatis一对多查询Pagehelper分页条数不对
问题:在写mybatis一对多的时候用到了Pagehelper进行分页,然后发现确实能分页,但是展示的条数不对,后来研究了发现原来Pagehelper插件在一对多查询的时候默认的是对多的一方进行的分页 ...
- mongodb 高级查询 统计记录条数
使用count()方法查询表中的记录条数,例如,下面的命令查询表users的记录数量: db.users.find().count();
- 查询主表每条数对应的最新一条日志 group
1.情景:A表为主表,B表为日志表 A:id,order_no,create_time B:id,orderr_no,log_content 2.查询A表中每个订单的最新一条日志 select * f ...
- mysql查询优化count(*)-查询记录总条数(一)
计算表记录总量最直接的方法就是使用count() 比如:select count(*) from 表名; 也有人喜欢这么写: select count(字段名) from 表名; 这两种写法都可以得到 ...
- oracle 查询每组条数,Oracle SQL查询:根据时间检索每组的最新值
这是一个完整的,经过测试的例子. CREATE TABLE tbl1 (ID NUMBER, dt DATE, quantity NUMBER); DELETE FROM tbl1; insert i ...
最新文章
- 【目标检测】yolo系列:从yolov1到yolov5之YOLOv5训练自己数据集(v6.0)
- 美国国家科学院发布:材料有哪些研究前沿?
- DHCP常用配置文件解析
- java高并发(一)导学
- 使用croc命令在Linux系统电脑之间传输文件和文件夹
- pytorch的backward参数
- redis scan 效率太慢_阿里云的redis规范
- 拓端tecdat|Excel实例:数组公式和函数
- tp3.2 缓存cache
- CustomValidator控件用法
- 预付费售电管理系统基础知识
- apereo cas开发_CAS 之 Apereo CAS 简介(一)
- 新浪微博登录html代码,新浪微博登录仿DiscuzX1.5论坛QQ登录样式 - YangJunwei
- 电视与电脑连接html线,电视机与电脑连接的方法
- java对接天眼查接口,天眼查提供案例方法过期最新案例
- 微信账户体系科普:什么是UnionId、OpenId与wxopenid?
- 中国化肥产业发展现状及趋势分析,化肥产能过剩情况得到缓解「图」
- 漫画人工智能:人工智能简史
- python小作业8代码(列表的遍历与嵌套)
- django实现qq一键登录(qq互联)
热门文章
- 成功解决ImportError: [joblib] Attempting to do parallel computing without protecting your import on a sy
- TF之TF flags:TF flags(命令行解析)的简介、安装、使用方法之详细攻略
- 快速提高CSDN访问量 - 附脚本初代机
- 决策树-特征属性选择划分
- (转)Spring定时任务的几种实现
- 绝大部分项目都是跟金融创新、互联网、移动互联网、社区经济、分享经济、互联网金融有关...
- TJA1050只能RX不能TX
- Linux mktime 源代码简析
- 单列模式(懒汉)测试代码
- Qt实现UDP通信简例