zoukankan      html  css  js  c++  java
  • MySQL教程69-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 |
    +----+-------+---------+------+------+--------+------------+
    5 rows in set (0.00 sec)

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

    不指定初始位置

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

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

    LIMIT 记录数

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

    LIMIT 记录数 = LIMIT 0, 记录数

    例 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 rows in set (0.00 sec)

    结果中只显示了 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 rows in set (0.26 sec)

    结果中只显示了 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 |
    +----+-------+---------+------+------+--------+------------+
    5 rows in set (0.00 sec)

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

  • 相关阅读:
    洛谷 1339 最短路
    洛谷 1330 封锁阳光大学 图论 二分图染色
    洛谷 1262 间谍网络 Tarjan 图论
    洛谷 1373 dp 小a和uim之大逃离 良心题解
    洛谷 1972 莫队
    洛谷 2158 数论 打表 欧拉函数
    洛谷 1414 数论 分解因数 水题
    蒟蒻的省选复习(不如说是noip普及组复习)————连载中
    关于筛法
    关于整数划分的几类问题
  • 原文地址:https://www.cnblogs.com/no-celery/p/13539221.html
Copyright © 2011-2022 走看看