在mysql中,可以利用“LIMIT”子句来限制查询个数,该子句可以限制SELECT查询结果返回的条数,语法“SELECT column1,column2,... FROM table LIMIT offset , count;”。
本教程操作环境:windows7系统、mysql8版本、Dell G3电脑。
当数据表中有上万条数据时,一次性查询出表中的全部数据会降低数据返回的速度,同时给数据库服务器造成很大的压力。这时就可以用 LIMIT 子句来限制查询结果返回的条数。
LIMIT 是 MySQL 中的一个特殊关键字,用于指定查询结果从哪条记录开始显示,一共显示多少条记录。
1. MySQL LIMIT子句简介
在SELECT
语句中使用LIMIT
子句来约束结果集中的行数。LIMIT
子句接受一个或两个参数。两个参数的值必须为零或正整数。
下面说明了两个参数的LIMIT
子句语法:
SELECT column1,column2,... FROM table LIMIT offset , count;
我们来查看LIMIT
子句参数:
-
offset
参数指定要返回的第一行的偏移量。第一行的偏移量为0
,而不是1
。 -
count
指定要返回的最大行数。
当您使用带有一个参数的LIMIT
子句时,此参数将用于确定从结果集的开头返回的最大行数。
SELECT column1,column2,... FROM table LIMIT count;
上面的查询等同于下面接受两个参数的LIMIT
子句的查询:
SELECT column1,column2,... FROM table LIMIT 0 , count;
2. 使用MySQL LIMIT获取前N行
可以使用LIMIT
子句来选择表中的前N
行记录,如下所示:
SELECT column1,column2,... FROM table LIMIT N;
例如,要查询employees
表中前5
个客户,请使用以下查询:
SELECT customernumber, customername, creditlimit FROM customers LIMIT 5;
或者 -
SELECT customernumber, customername, creditlimit FROM customers LIMIT 0,5;
执行上面语句,得到以下结果 -
mysql> SELECT customernumber, customername, creditlimit FROM customers LIMIT 5; +----------------+----------------------------+-------------+ | customernumber | customername | creditlimit | +----------------+----------------------------+-------------+ | 103 | Atelier graphique | 21000 | | 112 | Signal Gift Stores | 71800 | | 114 | Australian Collectors, Co. | 117300 | | 119 | La Rochelle Gifts | 118200 | | 121 | Baane Mini Imports | 81700 | +----------------+----------------------------+-------------+ 5 rows in set
3. 使用MySQL LIMIT获得最高和最低的值
LIMIT
子句经常与ORDER BY子句一起使用。首先,使用ORDER BY
子句根据特定条件对结果集进行排序,然后使用LIMIT
子句来查找最小或最大值。
注意:
ORDER BY
子句按指定字段排序的使用。
请参见示例数据库(yiibaidb)中的以下customers
表,其表结构如下所示 -
mysql> desc customers; +------------------------+---------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------------------+---------------+------+-----+---------+-------+ | customerNumber | int(11) | NO | PRI | NULL | | | customerName | varchar(50) | NO | | NULL | | | contactLastName | varchar(50) | NO | | NULL | | | contactFirstName | varchar(50) | NO | | NULL | | | phone | varchar(50) | NO | | NULL | | | addressLine1 | varchar(50) | NO | | NULL | | | addressLine2 | varchar(50) | YES | | NULL | | | city | varchar(50) | NO | | NULL | | | state | varchar(50) | YES | | NULL | | | postalCode | varchar(15) | YES | | NULL | | | country | varchar(50) | NO | | NULL | | | salesRepEmployeeNumber | int(11) | YES | MUL | NULL | | | creditLimit | decimal(10,2) | YES | | NULL | | +------------------------+---------------+------+-----+---------+-------+ 13 rows in set
例如,要查询信用额度最高的前五名客户,请使用以下查询:
SELECT customernumber, customername, creditlimit FROM customers ORDER BY creditlimit DESC LIMIT 5;
执行上面查询语句,得到以下结果 -
mysql> SELECT customernumber, customername, creditlimit FROM customers ORDER BY creditlimit DESC LIMIT 5; +----------------+------------------------------+-------------+ | customernumber | customername | creditlimit | +----------------+------------------------------+-------------+ | 141 | Euro+ Shopping Channel | 227600 | | 124 | Mini Gifts Distributors Ltd. | 210500 | | 298 | Vida Sport, Ltd | 141300 | | 151 | Muscle Machine Inc | 138500 | | 187 | AV Stores, Co. | 136800 | +----------------+------------------------------+-------------+ 5 rows in set
以下查询将返回信用限额最低的五位客户:
SELECT customernumber, customername, creditlimit FROM customers ORDER BY creditlimit ASC LIMIT 5;
4. 使用MySQL LIMIT获得第n个最高值
MySQL中最棘手的问题之一是:如何获得结果集中的第n
个最高值,例如查询第二(或第n
)贵的产品是哪个,显然不能使用MAX或MIN这样的函数来查询获得。 但是,我们可以使用MySQL LIMIT
来解决这样的问题。
- 首先,按照降序对结果集进行排序。
-
第二步,使用
LIMIT
子句获得第n
贵的产品。
通用查询如下:
SELECT column1, column2,... FROM table ORDER BY column1 DESC LIMIT nth-1, count;
下面我们来看看一个例子,将使用示例数据库(yiibaidb)中的产品(products
)表来进行演示。products
表的结构如下所示 -
mysql> desc products; +--------------------+---------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------------+---------------+------+-----+---------+-------+ | productCode | varchar(15) | NO | PRI | NULL | | | productName | varchar(70) | NO | | NULL | | | productLine | varchar(50) | NO | MUL | NULL | | | productScale | varchar(10) | NO | | NULL | | | productVendor | varchar(50) | NO | | NULL | | | productDescription | text | NO | | NULL | | | quantityInStock | smallint(6) | NO | | NULL | | | buyPrice | decimal(10,2) | NO | | NULL | | | MSRP | decimal(10,2) | NO | | NULL | | +--------------------+---------------+------+-----+---------+-------+ 9 rows in set
查看以下产品表中的行记录:
mysql> SELECT productCode, productName, buyprice FROM products ORDER BY buyprice DESC; +-------------+--------------------------------------+----------+ | productCode | productName | buyprice | +-------------+--------------------------------------+----------+ | S10_4962 | 1962 LanciaA Delta 16V | 103.42 | | S18_2238 | 1998 Chrysler Plymouth Prowler | 101.51 | | S10_1949 | 1952 Alpine Renault 1300 | 98.58 | | S24_3856 | 1956 Porsche 356A Coupe | 98.3 | | S12_1108 | 2001 Ferrari Enzo | 95.59 | | S12_1099 | 1968 Ford Mustang | 95.34 | ... .... +-------------+--------------------------------------+----------+ 110 rows in set
我们的任务找出结果集中价格第二高的产品。可以使用LIMIT
子句来选择第二行,如以下查询(注意:偏移量从0
开始,所以要指定从1
开始,然后取一行记录):
SELECT productCode, productName, buyprice FROM products ORDER BY buyprice DESC LIMIT 1, 1;
执行上面查询语句,得到以下结果 -
mysql> SELECT productCode, productName, buyprice FROM products ORDER BY buyprice DESC LIMIT 1, 1; +-------------+--------------------------------+----------+ | productCode | productName | buyprice | +-------------+--------------------------------+----------+ | S18_2238 | 1998 Chrysler Plymouth Prowler | 101.51 | +-------------+--------------------------------+----------+ 1 row in set
类似的,获取售价第三高、第四高的产品信息为:LIMIT 2, 1
和 LIMIT 3, 1
。
【相关推荐:mysql视频教程】
以上是mysql怎么限制查询个数的详细内容。更多信息请关注PHP中文网其他相关文章!

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于架构原理的相关内容,MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层,下面一起来看一下,希望对大家有帮助。

在mysql中,可以利用char()和REPLACE()函数来替换换行符;REPLACE()函数可以用新字符串替换列中的换行符,而换行符可使用“char(13)”来表示,语法为“replace(字段名,char(13),'新字符串') ”。

方法:1、利用right函数,语法为“update 表名 set 指定字段 = right(指定字段, length(指定字段)-1)...”;2、利用substring函数,语法为“select substring(指定字段,2)..”。

mysql的msi与zip版本的区别:1、zip包含的安装程序是一种主动安装,而msi包含的是被installer所用的安装文件以提交请求的方式安装;2、zip是一种数据压缩和文档存储的文件格式,msi是微软格式的安装包。

转换方法:1、利用cast函数,语法“select * from 表名 order by cast(字段名 as SIGNED)”;2、利用“select * from 表名 order by CONVERT(字段名,SIGNED)”语句。

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于MySQL复制技术的相关问题,包括了异步复制、半同步复制等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了mysql高级篇的一些问题,包括了索引是什么、索引底层实现等等问题,下面一起来看一下,希望对大家有帮助。

在mysql中,可以利用REGEXP运算符判断数据是否是数字类型,语法为“String REGEXP '[^0-9.]'”;该运算符是正则表达式的缩写,若数据字符中含有数字时,返回的结果是true,反之返回的结果是false。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

Atom编辑器mac版下载
最流行的的开源编辑器

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能