在MySQL中,我怎么能在一个表中检索所有的行,由行X开始? 例如,从6行开始:
LIMIT 5,0
这将返回什么,所以我尝试这样做:
LIMIT 5,ALL
依然没有结果(SQL错误)。
我不是在寻找的分页功能,只需从检索特定的行开始的所有行。 LIMIT 5,2000
似乎有点小题大做了我。 不知怎的,谷歌似乎并没有给我弄一些答案。 希望能帮到你。
谢谢
在MySQL中,我怎么能在一个表中检索所有的行,由行X开始? 例如,从6行开始:
LIMIT 5,0
这将返回什么,所以我尝试这样做:
LIMIT 5,ALL
依然没有结果(SQL错误)。
我不是在寻找的分页功能,只需从检索特定的行开始的所有行。 LIMIT 5,2000
似乎有点小题大做了我。 不知怎的,谷歌似乎并没有给我弄一些答案。 希望能帮到你。
谢谢
根据该文件 :
要检索从某一个偏移到结果集的末尾都行,你可以使用一些大量的第二个参数。 此语句检索从第96行到最后的所有行:
SELECT * FROM tbl LIMIT 95, 18446744073709551615;
这是一个MyISAM表可以容纳最大行数 ,2 ^ 64-1。
有2 ^ 32(〜4.295E + 09)行中MyISAM表的限制。 如果你构建MySQL使用--with-大表选项,行限制提高到(2 ^ 32)^ 2(1.844E + 19)行。 参见第2.16.2,“典型配置选项”。 对于Unix和Linux二进制分发版中都建有该选项。
如果你希望得到各行的最后x个,最容易做的事情是SORT DESC
和LIMIT到第一 x行。 诚然, SORT
将放缓查询下来。 但是,如果你反对设置任意大量的作为第二LIMIT
ARG,那么这是应该做的方式。
我所知道的目前唯一的解决办法是做像你说的,给一个高得离谱的数字作为第二个参数,来限制。 我不相信这是在性能上指定少量或大量的任何区别,MySQL会简单地停留在结果集的末尾返回行,或者当它击中你的极限。
我觉得你并不需要所有限制选择输入最大值。 这足以找到表的计数,然后用它作为最大限制。
接下来的查询应该工作过,并在我看来,更有效...
SELECT * FROM mytbl WHERE id != 1 ORDER BY id asc
通过订购查询将imediately找到ID和跳过这一个,所以接下来的行他将不会再检查是否ID = 1。