使用Limit的mySQL分页检索重复行

使用Limit的mySQL分页检索重复行,mysql,pagination,limit,Mysql,Pagination,Limit,我有一个包含116000行的表,我希望检索所有这些行,但在3个单独的查询中使用: 从表格中选择*限制0,50000 从表中选择*限制1,50000 从表中选择*限制250000 我已经试过了,但是所有的查询都返回50000行的结果,即使限制是10,50000,也有一个结果不是我想要的。我只希望第三个查询有16000行 我怎样才能做到这一点?我对限制分页的期望是错误的吗?是的,您的理解是错误的。你应该这样做 SELECT * FROM table LIMIT 100000, 50000 。语法是

我有一个包含116000行的表,我希望检索所有这些行,但在3个单独的查询中使用:

从表格中选择*限制0,50000 从表中选择*限制1,50000 从表中选择*限制250000 我已经试过了,但是所有的查询都返回50000行的结果,即使限制是10,50000,也有一个结果不是我想要的。我只希望第三个查询有16000行


我怎样才能做到这一点?我对限制分页的期望是错误的吗?

是的,您的理解是错误的。你应该这样做

SELECT * FROM table LIMIT 100000, 50000
。语法是

SELECT [..] LIMIT <count>


。然而,一切都与所选行数有关。

是的,您的理解是错误的。你应该这样做

SELECT * FROM table LIMIT 100000, 50000
。语法是

SELECT [..] LIMIT <count>


。然而,一切都与所选行数有关。

您对限制工作方式的预期是错误的。第一个参数是要获取的第一条记录,第二个参数是要获取的记录数

例如,如果一个查询有800个结果,并且您使用limit100300,那么您将得到第100到400行,总共300行


转到并搜索LIMIT子句,了解更多有关LIMIT工作原理的信息。

您对LIMIT工作原理的期望是错误的。第一个参数是要获取的第一条记录,第二个参数是要获取的记录数

例如,如果一个查询有800个结果,并且您使用limit100300,那么您将得到第100到400行,总共300行


转到并搜索LIMIT子句,了解有关LIMIT如何工作的更多信息。

LIMIT的第一个参数是起始记录编号,而不是起始页码。在这种情况下,您的限制应为:

从表中选择*限制0,从第0条记录开始选择50000条记录 从表中选择*限制50000,50000记录从第50000条记录开始 从表中选择*限制100000,50000条记录,从第100000条记录开始
要限制的第一个参数是起始记录编号,而不是起始页码。在这种情况下,您的限制应为:

从表中选择*限制0,从第0条记录开始选择50000条记录 从表中选择*限制50000,50000记录从第50000条记录开始 从表中选择*限制100000,50000条记录,从第100000条记录开始 这是限制偏移量,行计数。第一个查询从第0行开始获取50000行。第二个查询获取50000行,从第2行开始。换句话说,您获取的是49999行相同的数据,然后是一行不同的数据

如果你想把116000行分成3等份,你必须这样做

SELECT ... LIMIT 0, 38666
SELECT ... LIMIT 38667, 38666
SELECT ... LIMIT 77333, 38668
这是限制偏移量,行计数。第一个查询从第0行开始获取50000行。第二个查询获取50000行,从第2行开始。换句话说,您获取的是49999行相同的数据,然后是一行不同的数据

如果你想把116000行分成3等份,你必须这样做

SELECT ... LIMIT 0, 38666
SELECT ... LIMIT 38667, 38666
SELECT ... LIMIT 77333, 38668

Limit子句接受一个或两个参数:

第一个参数指定要返回的第一行的偏移量,第二个参数指定要返回的最大行数。初始行的偏移量为0而不是1

因此,您可以:

select * from table limit 0,50000;
select * from table limit 50001,50000;
select * from table limit 100001,50000;

看看这个

Limit子句有一个或两个参数:

第一个参数指定要返回的第一行的偏移量,第二个参数指定要返回的最大行数。初始行的偏移量为0而不是1

因此,您可以:

select * from table limit 0,50000;
select * from table limit 50001,50000;
select * from table limit 100001,50000;

看看这个

他不想要每页50000个结果。他不想要每页50000个结果。我想你每次都会少一行。它应该是0,50000,然后是50000,50000,所以我想你每次都会缺一行。它应该是0,50000,然后是50000,50000等等