• 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”返回的结果相同。

  • 相关阅读:
    微人事项目-mybatis-持久层
    通过外键连接多个表
    springioc
    Redis 消息中间件 ServiceStack.Redis 轻量级
    深度数据对接 链接服务器 数据传输
    sqlserver 抓取所有执行语句 SQL语句分析 死锁 抓取
    sqlserver 索引优化 CPU占用过高 执行分析 服务器检查
    sql server 远程备份 bak 删除
    冒泡排序
    多线程 异步 beginInvoke EndInvoke 使用
  • 原文地址:https://www.cnblogs.com/no-celery/p/13539221.html
Copyright © 2020-2023  润新知