15、limit 子句 返回指定的行数据
1、limit 子句返回指定的行数据
限制 SELECT 语句返回的行数。
命令:
select 字段名 from 表名 LIMIT offset, row_count; -- offset:偏移量,跳过前多少行,从offset + 1 行开始取;row_count:行数, 要返回多少行
limit 接受一个或两个数字参数。参数必须是一个整数常量。不支持负数、小数、表达式、变量
- 给定一个参数,表示从第一行开始,返回 N 行记录;
- 给定两个参数,表示分页查询,跳过前
X行,从第X + 1行开始,取N行。偏移量从 0 开始(不是 1!)
| 参数 | 类型 | 含义 | 注意事项 |
|---|---|---|---|
X |
非负整数常量(可选) | 起始偏移量(跳过前面多少行) | 从 0 开始计数;默认为 0 |
N |
非负整数常量 | 要返回的最大行数 | 必须 ≥ 0;若为 0,则返回空结果集 |
使用 LIMIT ... OFFSET ...
为了可读性和避免歧义,强烈建议使用标准 SQL 风格:
-- 清晰表达:取 4 行,跳过前 3 行 SELECT * FROM table LIMIT 4 OFFSET 3; -- LIMIT 指定数量,OFFSET 指定跳过多少
记忆口诀:
- 逗号写法:先跳后取;
- OFFSET 写法:先取后跳
或: LIMIT M, N = LIMIT N OFFSET M
如:
LIMIT 3,4 的含义是:跳过前 3 行,然后取接下来的 4 行。即:从第 4 行开始,取 4 行数据(行号从 1 开始计数)。
-- 这等价于: LIMIT 4 OFFSET 3
例子
MariaDB [test]> select * from t1; +----+------+------+ | id | name | sex | +----+------+------+ | 1 | q | | | 2 | w | | | 3 | er | male | | 4 | e | | +----+------+------+ 4 rows in set (0.00 sec) MariaDB [test]> select * from t1 limit 1; +----+------+-----+ | id | name | sex | +----+------+-----+ | 1 | q | | +----+------+-----+ 1 row in set (0.00 sec) MariaDB [test]> select * from t1 limit 1,2; +----+------+------+ | id | name | sex | +----+------+------+ | 2 | w | | | 3 | er | male | +----+------+------+ 2 rows in set (0.00 sec) -- 查询前 3 条 SELECT * FROM users LIMIT 0, 3; -- 等价于 LIMIT 3 -- 结果:id=1,2,3 -- 查询第 4~6 条(跳过前3条,取3条) SELECT * FROM users LIMIT 3, 3; -- 结果:id=4,5,6 -- 查询第 2 页,每页 5 条(第6~10条) SELECT * FROM users LIMIT 5, 5; -- 结果:id=6,7,8,9,10
必须配合 ORDER BY 使用!
没有 ORDER BY 的 LIMIT 结果是不确定的!数据库可能以任意顺序返回行(取决于存储引擎、缓存等)
SELECT select_list FROM table_name [WHERE ...] [ORDER BY ...] LIMIT X, N;
本文来自博客园,作者:chao_xiong,转载请注明原文链接:https://www.cnblogs.com/chao-xiong/p/19240923

浙公网安备 33010602011771号