MySQL数据库中的LIMIT语句用于限制查询结果的数量。它可以与SELECT语句一起使用,以指定查询返回的行数。LIMIT语句开始行数默认是从零开始算的。
SELECT <列名1>,...<列名n> FROM <表名1>,...<表名n> LIMIT <第几行开始>,<返回行数>;
语法说明:<>是中文解释,逗号','代表分隔号。
或者
SELECT <列名1>,...<列名n> FROM <表名1>,...<表名n> LIMIT <返回行数> OFFSET <第几行开始>;
首先,假设我们有一个名为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条数据