轻松上手,快乐学习!

MySQL 教程

MySQL 首页MySQL 介绍MySQL 安装MySQL 实例库下载MySQL 实例库导入MySQL SELECTMySQL DISTINCTMySQL ORDER BYMySQL WHEREMySQL ANDMySQL ORMySQL INMySQL BETWEENMySQL LIKEMySQL LIMITMySQL IS NULLMySQL 别名MySQL JOINSMySQL INNER JOINMySQL LEFT JOINMySQL RIGHT JOINMySQL CROSS JOINMySQL SELF JOINMySQL GROUP BYMySQL HAVINGMySQL ROLLUPMySQL 子查询MySQL 派生表MySQL EXISTSMySQL CTEMySQL 递归 CTEMySQL UNIONMySQL INTERSECTMySQL MINUSMySQL INSERTMySQL INSERT INTO SELECTMySQL INSERT IGNOREMySQL UPDATEMySQL UPDATE JOINMySQL DELETEMySQL ON DELETE CASCADEMySQL DELETE JOINMySQL REPLACEMySQL PREPAREMySQL 事务MySQL 表锁定MySQL USEMySQL 数据库管理MySQL CREATE DATABASEMySQL DROP DATABASEMySQL 存储引擎MySQL CREATE TABLEMySQL 序列MySQL ALTER TABLEMySQL RENAME TABLEMySQL DROP COLUMNMySQL ADD COLUMNMySQL DROP TABLEMySQL 临时表MySQL TRUNCATE TABLEMySQL 数据类型MySQL NOT NULLMySQL Primary KeyMySQL Foreign KeyMySQL UNIQUEMySQL CHECKMySQL 字符集MySQL 排序规则MySQL 导入 CSVMySQL 导出 CSVMySQL 自然排序MySQL 基础

MySQL 存储过程

MySQL 存储过程介绍MySQL 存储过程实例MySQL 存储过程变量MySQL 存储过程参数MySQL 存储过程返回多值MySQL IF 语句MySQL CASE 语句MySQL IF CASE 选择MySQL 存储过程循环MySQL 存储过程游标MySQL 存储过程列表MySQL 存储过程异常处理MySQL SIGNAL 和 RESIGNALMySQL 存储函数

MySQL 视图

MySQL 视图教程SQL 视图介绍MySQL 视图介绍MySQL 创建视图MySQL 可更新视图WITH CHECK OPTIONLOCAL&CASCADEDMySQL 视图管理

MySQL 触发器

MySQL 触发器SQL 触发器MySQL 触发器介绍MySQL 触发器的创建MySQL 创建多个触发器MySQL 触发器管理MySQL 计划事件MySQL事件修改

MySQL 索引

MySQL 索引MySQL 索引创建MySQL 索引删除MySQL 显示索引MySQL 唯一索引MySQL 前缀索引MySQL 隐形索引MySQL 降序索引MySQL 复合索引MySQL 聚集索引MySQL 索引基数MySQL USE INDEXMySQL 强制索引

MySQL 管理

MySQL 管理MySQL访问控制系统MySQL 用户创建MySQL 用户密码MySQL 权限授予MySQL 权限撤销MySQL 角色MySQL 删除用户MySQL 表维护mysqldump 备份工具MySQL 数据库列表MySQL 表列表MySQL 表字段列表MySQL 用户列表MySQL 进程列表MySQL 列生成比较MySQL中同一表中的连续行

MySQL 全文搜索

MySQL 全文搜索MySQL 全文搜索介绍FULLTEXT索引MySQL 自然语言全文搜索MySQL 布尔全文搜索MySQL查询扩展MySQL ngram

MySQL 高级

MySQL 函数MySQL 窗口函数

MySQL 技巧

MySQL 查找重复数据MySQL 删除重复数据MySQL UUIDMySQL 表的复制MySQL 复制库MySQL 变量MySQL SELECT INTO 变量MySQL 表的存储引擎MySQL 使用正则查询MySQL 添加序号MySQL 随机查询MySQL 查询第 N 高记录MySQL 重置自增值MySQL VS MariaDBMySQL 间隔值MySQL 获取当天日期MySQL NULL 映射MySQL 注释理解MySQL EXPLAINMySQL 技巧介绍MySQL COUNTMySQL 数据分层MySQL 两表比较Mysql Like 优化

MySQL 窗口函数

MySQL CUME_DIST() 函数MySQL DENSE_RANK() 函数MySQL FIRST_VALUE 函数MySQL LAG() 函数MySQL LAST_VALUE() 函数MySQL LEAD 函数MySQL NTH_VALUE 函数MySQL NTILE 函数MySQL PERCENT_RANK 函数MySQL RANK 函数MySQL ROW_NUMBER 函数

MySQL 应用

MySQL应用程序编程接口PHP MySQL教程PHP 数据库连接

MySQL 优化

mysqld 内存持续变高


MySQL LIMIT 子句


简介在本教程中,您将学习如何使用MySQL LIMIT子句来约束查询返回的行数。


MySQL LIMIT子句简介

SELECT语句中使用LIMIT 子句来约束结果集中的行数。LIMIT子句接受一个或两个参数。两个参数的值必须为零或正整数

以下说明了LIMIT带有两个参数的子句语法:

SELECT 
    column1,column2,...
FROM
    table
LIMIT offset , count;

我们来看一下子LIMIT句参数:

  • offset第一行的偏移规定返回。offset第一行的是0,而不是1。
  • count指定要返回行的最大数目。

mysql限制偏移量

当您使用带有一个参数的 LIMIT 子句时,此参数将用于确定从结果集的开头返回的最大行数。

SELECT 
   select_list
FROM
   table
LIMIT count;

上面的查询等效于以下查询,LIMIT子句接受两个参数:

SELECT 
    select_list
FROM
    table
LIMIT 0 , count;

使用MySQL LIMIT获取前N行

您可以使用LIMIT子句 从表中选择第N 行,如以下查询所示:

SELECT 
    column1,column2,...
FROM
    table
LIMIT N;

例如,此查询选择前10个客户:

SELECT
 customernumber,
 customername,
 creditlimit
FROM
 customers
LIMIT 10;

运行结果:

+----------------+------------------------------+-------------+
| customernumber | customername                 | creditlimit |
+----------------+------------------------------+-------------+
|            103 | Atelier graphique            |    21000.00 |
|            112 | Signal Gift Stores           |    71800.00 |
|            114 | Australian Collectors, Co.   |   117300.00 |
|            119 | La Rochelle Gifts            |   118200.00 |
|            121 | Baane Mini Imports           |    81700.00 |
|            124 | Mini Gifts Distributors Ltd. |   210500.00 |
|            125 | Havel & Zbyszek Co           |        0.00 |
|            128 | Blauer See Auto, Co.         |    59700.00 |
|            129 | Mini Wheels Co.              |    64600.00 |
|            131 | Land of Toys Inc.            |   114900.00 |
+----------------+------------------------------+-------------+
10 rows in set (0.01 sec)

使用MySQL LIMIT获取最高和最低值

LIMIT经常与ORDER BY一起使用。

首先,使用ORDER BY  子句根据特定条件对结果集进行排序,然后使用 LIMIT子句查找最低或最高值。

请参阅示例数据库中的下customers表。

+------------------------+
| customers              |
+------------------------+
| customerNumber         |
| customerName           |
| contactLastName        |
| contactFirstName       |
| phone                  |
| addressLine1           |
| addressLine2           |
| city                   |
| state                  |
| postalCode             |
| country                |
| salesRepEmployeeNumber |
| creditLimit            |
+------------------------+
13 rows in set (0.02 sec)

以下示例返回信用额度最高的前五位客户:

SELECT
 customernumber,
 customername,
 creditlimit
FROM
 customers
ORDER BY
 creditlimit DESC
LIMIT 5;

运行结果:

+----------------+------------------------------+-------------+
| customernumber | customername                 | creditlimit |
+----------------+------------------------------+-------------+
|            141 | Euro+ Shopping Channel       |   227600.00 |
|            124 | Mini Gifts Distributors Ltd. |   210500.00 |
|            298 | Vida Sport, Ltd              |   141300.00 |
|            151 | Muscle Machine Inc           |   138500.00 |
|            187 | AV Stores, Co.               |   136800.00 |
+----------------+------------------------------+-------------+
5 rows in set (0.00 sec)

以下查询返回信用额度最低的前五位客户:

SELECT
 customernumber,
 customername,
 creditlimit
FROM
 customers
ORDER BY
 creditlimit ASC
LIMIT 5;

运行结果:

+----------------+----------------------------+-------------+
| customernumber | customername               | creditlimit |
+----------------+----------------------------+-------------+
|            223 | Natrlich Autos             |        0.00 |
|            168 | American Souvenirs Inc     |        0.00 |
|            169 | Porto Imports Co.          |        0.00 |
|            206 | Asian Shopping Network, Co |        0.00 |
|            125 | Havel & Zbyszek Co         |        0.00 |
+----------------+----------------------------+-------------+
5 rows in set (0.00 sec)

使用MySQL LIMIT获得第N个最高值

MySQL中最棘手的问题之一是选择结果集中的第N个最高值,例如,选择第二个(或第n个)最昂贵的产品,您无法使用MAXMIN无法回答这些产品。但是,可以使用MySQL LIMIT来解决这些问题。

  1.  按降序对结果集进行排序。
  2. 使用LIMIT条款获得第n个最昂贵的产品。

常见的查询模式如下:

SELECT 
    select_list
FROM
    table
ORDER BY sort_expression DESC
LIMIT nth-1, count;

我们来看一个例子吧。我们将使用示例数据库中products表进行演示。

+--------------------+
| products           |
+--------------------+
| productCode        |
| productName        |
| productLine        |
| productScale       |
| productVendor      |
| productDescription |
| quantityInStock    |
| buyPrice           |
| MSRP               |
+--------------------+
9 rows in set (0.02 sec)

请参阅以下产品结果集:

SELECT
 productName,
 buyprice
FROM
 products
ORDER BY
 buyprice DESC;

运行结果:

+---------------------------------------------+----------+
| productName                                 | buyprice |
+---------------------------------------------+----------+
| 1962 LanciaA Delta 16V                      |   103.42 |
| 1998 Chrysler Plymouth Prowler              |   101.51 |
| 1952 Alpine Renault 1300                    |    98.58 |
| 1956 Porsche 356A Coupe                     |    98.30 |
| 2001 Ferrari Enzo                           |    95.59 |
| 1968 Ford Mustang                           |    95.34 |

我们的目的是从获得高价排序的产品中取第二昂贵的产品。因此,可以使用LIMIT子句选择第二行作为以下查询:(注意偏移从零开始)

SELECT
 productName,
 buyprice
FROM
 products
ORDER BY
 buyprice DESC
LIMIT 1, 1;

运行结果:

+--------------------------------+----------+
| productName                    | buyprice |
+--------------------------------+----------+
| 1998 Chrysler Plymouth Prowler |   101.51 |
+--------------------------------+----------+
1 row in set (0.00 sec)

在本教程中,我们向您展示了如何使用MySQL LIMIT子句来约束SELECT语句返回的行数。