MySQL教程 MySQL教程MySQL 连接MySQL 查看数据库MySQL 创建数据库MySQL 修改数据库MySQL 删除数据库MySQL 选择数据库MySQL 数据类型MySQL存储引擎MySQL 数据表的增删改查MySQL 表数据增删改查操作MySQL 条件子句MySQL 清空表记录MySQL 模糊查询MySQL 处理重复数据MySQL 别名MySQL 限制查询结果数量Mysql 查询结果排序MySQL 范围查询MySQL 空值查询MySQL 查询结果合拼MySQL 分组MySQL 筛选分组MySQL 表连接MySQL NULL值处理MySQL 子查询MySQL 正则表达式MySQL 视图MySQL 索引MySQL 事务MySQL 数据库备份(导出)/还原(导入)MySQL安装 MySQL Windows版下载教程MySQL windows系统安装教程MySQL windows系统简单的安装教程MySQL Linux系统安装教程MySQL Linux系统下载教程MySQL Linux系统简单的安装教程配置MySQL环境变量

MySQL 限制查询结果数量

MySQL数据库中的LIMIT语句用于限制查询结果的数量。它可以与SELECT语句一起使用,以指定查询返回的行数。LIMIT语句开始行数默认是从零开始算的

LIMIT语句的语法如下:

SELECT <列名1>,...<列名n> FROM <表名1>,...<表名n>
LIMIT <第几行开始>,<返回行数>;

语法说明:<>是中文解释,逗号','代表分隔号。

或者

SELECT <列名1>,...<列名n> FROM <表名1>,...<表名n>
LIMIT <返回行数> OFFSET <第几行开始>;

案例:获取订单表中前3条数据

首先,假设我们有一个名为orders的表,包含以下列:order_id(订单ID)、customer_id(顾客ID)、order_date(订单日期)和total_amount(总金额)。

获取案例新建表格和插入数据语句

创建表格

首先,让我们创建一个新的表格orders,以存储订单数据:

CREATE TABLE orders (
  order_id INT PRIMARY KEY,
  customer_id INT,
  order_date DATE,
  total_amount DECIMAL(10, 2)
);

插入数据

接下来,假设我们要向orders表中插入一些订单数据。以下是插入前5条订单数据的示例:

INSERT INTO orders (
	order_id,
	customer_id,
	order_date,
	total_amount
)
VALUES
	(1, 1001, '2023-01-01', 100.00),
	(2, 1002, '2023-01-02', 200.00),
	(3, 1003, '2023-01-03', 300.00),
	(4, 1004, '2023-01-04', 400.00),
	(5, 1005, '2023-01-05', 500.00);

查询前5条数据

处理前数据

mysql> SELECT * FROM orders;
+----------+-------------+------------+--------------+
| order_id | customer_id | order_date | total_amount |
+----------+-------------+------------+--------------+
|        1 |        1001 | 2023-01-01 |       100.00 |
|        2 |        1002 | 2023-01-02 |       200.00 |
|        3 |        1003 | 2023-01-03 |       300.00 |
|        4 |        1004 | 2023-01-04 |       400.00 |
|        5 |        1005 | 2023-01-05 |       500.00 |
+----------+-------------+------------+--------------+
5 rows in set (0.00 sec)

现在,我们可以使用LIMIT语句来获取orders表中前3条数据:

mysql> SELECT * FROM orders LIMIT 0,3;
+----------+-------------+------------+--------------+
| order_id | customer_id | order_date | total_amount |
+----------+-------------+------------+--------------+
|        1 |        1001 | 2023-01-01 |       100.00 |
|        2 |        1002 | 2023-01-02 |       200.00 |
|        3 |        1003 | 2023-01-03 |       300.00 |
+----------+-------------+------------+--------------+
3 rows in set (0.00 sec)


注意LIMIT语句中的offset和count的值必须是整数。offset表示从查询结果中的第几行开始返回,默认为0。count表示要返回的行数。

MySQL的LIMIT语句不能只写一个数,需要连个数一起写:

mysql> SELECT * FROM orders LIMIT 3;
ERROR 2013 (HY000): Lost connection to MySQL server during query

MySQL的LIMIT语句数字间的逗号和OFFSET写法不一样

mysql> SELECT * FROM orders LIMIT 2 OFFSET 3;
+----------+-------------+------------+--------------+
| order_id | customer_id | order_date | total_amount |
+----------+-------------+------------+--------------+
|        4 |        1004 | 2023-01-04 |       400.00 |
|        5 |        1005 | 2023-01-05 |       500.00 |
+----------+-------------+------------+--------------+
2 rows in set (0.03 sec)

以上结果为获取订单第四行开始获取2条数据

逗号写法

mysql> SELECT * FROM orders LIMIT 3,2;
+----------+-------------+------------+--------------+
| order_id | customer_id | order_date | total_amount |
+----------+-------------+------------+--------------+
|        4 |        1004 | 2023-01-04 |       400.00 |
|        5 |        1005 | 2023-01-05 |       500.00 |
+----------+-------------+------------+--------------+
2 rows in set (0.00 sec)

以上结果为获取订单第四行开始获取2条数据