Mysql 中 limit 的用法详解 Mysql 中 limit 的用法:在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢? 不用担心, mysql 已经为我们提供了这样一个功能。 SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。 LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数, 第一个参数指定第一个返回记录行的偏移量, 第二个参数指定返回记录行的最大数目。初始记录行的偏移量是 0( 而不是 1): 为了与 PostgreSQL 兼容, MySQL 也支持句法: LIMIT # OFFSET #。 mysql> SELECT * FROM table LIMIT 5,10; // 检索记录行 6-15 // 为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为-1: mysql> SELECT * FROM table LIMIT 95,-1; // 检索记录行 96-last. // 如果只给定一个参数,它表示返回最大的记录行数目: mysql> SELECT * FROM table LIMIT 5; // 检索前 5 个记录行// 换句话说, LIMIT n 等价于 LIMIT 0,n 。注意 limit 10 和 limit 9,1 的不同: 例如: 1. Select * From cyclopedia Where ID>=( Select Max(ID) From ( Select ID From cyclopedia Order By ID limit 90001 ) As tmp ) limit 100; 2. Select * From cyclopedia Where ID>=( Select Max(ID) From ( Select ID From cyclopedia Order By ID limit 90000,1 ) As tmp ) limit 100; 同样是取 90000 条后 100 条记录,第1 句快还是第 2 句快? 第1 句是先取了前 90001 条记录, 取其中最大一个 ID 值作为起始标识, 然后利用它可以快速定位下 100 条记录第2 句择是仅仅取 90000 条记录后 1条, 然后取 ID 值作起始标识定位下 100 条记录第1 rows in set () sec 第2 rows in set () sec 其实第 2 句完全可以简化成: Select * From cyclopedia Where ID>=( Select ID From cyclopedia limit 90000,1 )limit 100; 直接利用第 9000 0 条记录的 ID, 不用经过 Ma x 运算, 这样做理论上效率因该高一些, 但在实际使用中几乎看不到效果, 因为本身定位 ID 返回的就是 1 条记录,Max 几乎不用运作就能得到结果, 但这样写更清淅明朗, 省去了画蛇那一足. Select Top 100 * From cyclop
Mysql中limit的用法详解 来自淘豆网m.daumloan.com转载请标明出处.