如何使用LIMIT和OFFSET跳过前10行选取剩余所有数据行?
跳过指定行后获取剩余所有数据的SQL写法
没法直接用LIMIT 10, *这种伪代码写法,不同数据库系统有各自的实现方式,具体如下:
MySQL/MariaDB:
可以用一个足够大的数值(比如无符号BigInt最大值18446744073709551615)替代100,语句如下:SELECT ... FROM ... ORDER BY ... LIMIT 10, 18446744073709551615;从MySQL 8.0.17版本开始,也支持标准SQL的写法:
SELECT ... FROM ... ORDER BY ... OFFSET 10 ROWS FETCH NEXT ALL ROWS ONLY;PostgreSQL:
支持直接用LIMIT ALL来表示获取剩余所有行:SELECT ... FROM ... ORDER BY ... LIMIT ALL OFFSET 10;也可以用标准SQL写法:
SELECT ... FROM ... ORDER BY ... OFFSET 10 ROWS FETCH ALL ROWS ONLY;SQLite:
允许用-1作为行数参数来获取剩余所有行:SELECT ... FROM ... ORDER BY ... LIMIT 10, -1;SQL Server:
不支持LIMIT语法,需使用OFFSET ... FETCH:SELECT ... FROM ... ORDER BY ... OFFSET 10 ROWS FETCH NEXT ALL ROWS ONLY;
简单来说,没有通用的LIMIT 10, *写法,但每个数据库都有对应的方案实现“跳过前10行后取剩余所有数据”的需求,根据你使用的数据库选择对应语法即可。
内容的提问来源于stack exchange,提问作者Mr. B.
相关产品推荐
相关产品推荐

