2010-05-13 113 views
72

MySQL中有一种方法可以跳过SELECT查询的前10个结果吗? 我希望它能像LIMIT一样工作。MySQL跳过前10条结果

+6

这里的所有答案都缺少一个ORDER BY子句。 SQL表没有默认顺序,没有明确的ORDER BY,没有办法告诉前面10个结果跳过 – fthiella 2013-07-05 19:17:22

回答

5

LIMIT允许您跳过任意数量的行。它有2个参数,和他们的第一个 - 有多少行跳过

+0

这让我清楚“什么是Offset”谢谢@Col。 Shrapnel – 2011-02-23 02:32:56

24

manual

从某个检索所有行偏移到结果集的末尾,你可以为第二个参数使用一些大数字。显然

SELECT * FROM tbl LIMIT 95,18446744073709551615; 

,你应该10取代95:此语句检索从第96行中的所有行到最后。顺便说一下,他们使用的大数目是2^64 - 1。

+5

如果我的记录超过18446744073709551615,该怎么办? :-) – ceejayoz 2010-05-13 13:24:40

+1

在1byte每个,你可能会等待一段时间:P〜18pB ... – Kurru 2010-05-13 13:27:29

+18

@ceejayoz:那么你有一台机器从未来至少50年,你可能不会编程MySQL查询:P – Thomas 2010-05-14 06:33:07

89

使用带两个参数的LIMIT。例如,为了返回结果11-60(其中结果1是第一排),可使用:

SELECT * FROM foo LIMIT 10, 50 

对于溶液返回所有结果见Thomas' answer

+0

如果在你提到的数字之间删除了某些行,该怎么办? – 2015-05-23 12:22:37

61

有偏移,以及应该做的伎俩:

SELECT column FROM table 
LIMIT 10 OFFSET 10 
+1

作品在Postgres太 – 2012-08-27 04:38:20

+0

更容易比'限10,10' – shellbye 2016-05-05 06:11:36

20

OFFSET是你在找什么。

SELECT * FROM table LIMIT 10 OFFSET 10 
1
select * from table where id not in (select id from table limit 10) 

其中id在你的表中的键。

+0

没有效率增益这里 – Isaac 2013-05-11 02:39:16

+0

这是非常有用和快速的做,对黑斑羚和其他数据库,其中有偏移限制要求的命令参数,它是并不总是希望了解。 – 2017-04-23 22:26:11

+0

这是实际达到问题要求的唯一答案。它在第一个10 - 完美后获得所有结果。 Upvoted。 – benjaminhull 2017-08-21 15:48:45