如何获得的所有行X行开始在MySQL(How to get ALL rows starting fr

2019-07-20 01:18发布

在MySQL中,我怎么能在一个表中检索所有的行,由行X开始? 例如,从6行开始:

LIMIT 5,0

这将返回什么,所以我尝试这样做:

LIMIT 5,ALL

依然没有结果(SQL错误)。

我不是在寻找的分页功能,只需从检索特定的行开始的所有行。 LIMIT 5,2000似乎有点小题大做了我。 不知怎的,谷歌似乎并没有给我弄一些答案。 希望能帮到你。

谢谢

Answer 1:

根据该文件 :

要检索从某一个偏移到结果集的末尾都行,你可以使用一些大量的第二个参数。 此语句检索从第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二进制分发版中都建有该选项。



Answer 2:

如果你希望得到各行的最后x个,最容易做的事情是SORT DESC和LIMIT到第一 x行。 诚然, SORT将放缓查询下来。 但是,如果你反对设置任意大量的作为第二LIMIT ARG,那么这是应该做的方式。



Answer 3:

我所知道的目前唯一的解决办法是做像你说的,给一个高得离谱的数字作为第二个参数,来限制。 我不相信这是在性能上指定少量或大量的任何区别,MySQL会简单地停留在结果集的末尾返回行,或者当它击中你的极限。



Answer 4:

我觉得你并不需要所有限制选择输入最大值。 这足以找到表的计数,然后用它作为最大限制。



Answer 5:

接下来的查询应该工作过,并在我看来,更有效...

SELECT * FROM mytbl WHERE id != 1 ORDER BY id asc

通过订购查询将imediately找到ID和跳过这一个,所以接下来的行他将不会再检查是否ID = 1。



文章来源: How to get ALL rows starting from row x in MySQL