我有一个有3500行的SQL表(实际上还有更多的行)。我需要知道是否有可能把它们全部取出来,然后把它们分成1000组。我知道最后一组应该是500行,但没关系。
我需要执行一个自动查询来生成站点地图,最多有1000个条目。
更新
因此,我需要4套以上的查询,1000个条目在前3个数组和500个条目在最后一个数组。
发布于 2019-06-21 00:04:45
如果要从SQL查询级别执行此操作,可以使用有限制(文档)的偏移量:
SELECT * FROM orders LIMIT 1000 OFFSET 0
SELECT * FROM orders LIMIT 1000 OFFSET 1000
SELECT * FROM orders LIMIT 1000 OFFSET 2000
等。
较短的语法是
SELECT * FROM orders LIMIT 1000, 0
SELECT * FROM orders LIMIT 1000, 1000
SELECT * FROM orders LIMIT 1000, 2000
但是,如果要用查询加载所有3500行,请使用array_chunk()
(链接):
$allRows = [/* your data */];
$chunkSize = 1000;
$chunks = \array_chunk($allRows, $chunkSize);
发布于 2019-06-21 00:01:57
您可以将LIMIT
与OFFSET
结合使用。阅读手册这里
如果希望使用前1000行,请使用:
SELECT * FROM table
LIMIT 0, 1000
如果需要其他1000行,请使用:
SELECT * FROM table
LIMIT 1000, 1000
就你而言:
SELECT * FROM table LIMIT 0, 1000;
SELECT * FROM table LIMIT 1000, 1000;
SELECT * FROM table LIMIT 2000, 1000;
SELECT * FROM table LIMIT 3000, 500;
https://stackoverflow.com/questions/56699172
复制