Mysql的limit用法的真正含义

1. select * from tablename <条件语句> limit 100,15

从100条记录后开始取15条 (实际取取的是第101-115条数据)

2. select * from tablename <条件语句> limit 100,-1

从第100条后开始-最后一条的记录

3. select * from tablename <条件语句> limit 15

相当于limit 0,15   .查询结果取前15条数据

这是关于limit用法的最常见的解释.

不过由于在实际使用中id自增,所以在认识后面参数的含义上有些问题.由于id一般是auto_increment的.所以我一直以为limit 2,1中的 2的含义是其实id,即id=2的数据.其实2是第2条数据,和id的数值没有任何的关系.

我也是在做北美博客博文推送的时候,我用的是cron跑的程序,一次获取一定数量的数据,跑一次记录下当时结束的id,然后下次再这样跑程序LIMIT 上次结束的id,一定数量.

起初结果和预想的是一样的,但是当数据量很大的时候,为了速度我删除了前面的一大部分数据,这时上面的方法就不可用了.

我用一个测试数据表来测试过了.

这是一个完整的测试数据

完整的测试数据

下面依次执行以下sql

SELECT id FROM test LIMIT 0,2

测试sql -1

SELECT id FROM test LIMIT 2,2

测试sql -2

SELECT id FROM test LIMIT 14,2

测试sql -3

现在把数据删除一些,如下图

删除后的测试数据

再执行上面的sql语句

测试sql -4

测试sql -5

测试sql -6

现在可以看出结果了吧.

发表评论

返回顶部