在 MySQL 中检索大型按块选择?
mysqli mysqldatabase更新于 2024/4/18 13:32:17
要检索大型按块选择,您需要使用 ORDER BY LIMIT。语法如下:
SELECT *FROM yourTableName ORDER BY yourColumnName LIMIT 0,10;
从上面的语法中,您将从表中获取 10 行。在上述语法中,0 表示表结果集的第一行,这意味着它是基于零索引的。LIMIT 的第二个值表示可以从表中检索的最大行数。
如果您想要 10 到 30 之后的行,则像这样使用 LIMIT。语法如下:
SELECT *FROM yourTableName ORDER BY yourColumnName LIMIT 10,20; //11 到 30
如果您想要另一组从 30 到 50 的行,请再次使用 LIMIT:
SELECT *FROM yourTableName ORDER BY yourColumnName LIMIT 30 ,20; 31 到 50。
您需要为此使用临时表。语法如下:
DROP TEMPORARY TABLE IF EXISTS yourTemporaryTableName; CREATE TEMPORARY TABLE yourTempTableName AS ( SELECT *FROM yourOriginalTableName ORDER BY LIMIT 0,100 );
如果所有记录都在临时表中,则使用上面讨论的 LIMIT 从临时表中取回所有记录。
SELECT *FROM yourTemporaryTableName LIMIT 0,100; SELECT *FROM yourTemporaryTableName LIMIT 100,1000;
现在,由您来设置限制值。现在删除临时表是一种很好的做法。查询如下:
DROP TEMPORARY TABLE yourTemporaryTableName;
让我们对上述讨论进行演示。首先创建一个表。创建表的查询如下:
mysql> create table getRecordsDemo -> ( -> Id int NOT NULL AUTO_INCREMENT, -> PRIMARY KEY(Id) -> ); Query OK, 0 rows affected (1.68 sec)
使用 insert 命令在表中插入一些记录。 查询语句如下:
mysql> insert into getRecordsDemo values(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(); Query OK, 738 rows affected (0.34 sec) Records: 738 Duplicates: 0 Warnings: 0
现在创建一个类似上表的临时表。创建临时表的查询如下:
mysql> drop temporary table if exists TempRecord; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> create temporary table TempRecord -> as -> ( -> select * from getRecordsDemo order by Id limit 0,738 -> ); Query OK, 738 rows affected (0.03 sec) Records: 738 Duplicates: 0 Warnings: 0
现在您可以使用 LIMIT 子句分块获取结果。
案例 1:查询如下,从临时表"TempRecord"中获取一些记录:
mysql> select *from TempRecord limit 0,10;
输出结果如下:
+----+ | Id | +----+ | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 | | 8 | | 9 | | 10 | +----+ 10 rows in set (0.00 sec)
案例 2:查询如下以获取下一组记录:
mysql> select *from TempRecord limit 10,20; +----+ | Id | +----+ | 11 | | 12 | | 13 | | 14 | | 15 | | 16 | | 17 | | 18 | | 19 | | 20 | | 21 | | 22 | | 23 | | 24 | | 25 | | 26 | | 27 | | 28 | | 29 | | 30 | +----+ 20 rows in set (0.00 sec)
案例 3:查询如下,获取另一组记录:
mysql> select *from TempRecord limit 30,20; +----+ | Id | +----+ | 31 | | 32 | | 33 | | 34 | | 35 | | 36 | | 37 | | 38 | | 39 | | 40 | | 41 | | 42 | | 43 | | 44 | | 45 | | 46 | | 47 | | 48 | | 49 | | 50 | +----+ 20 rows in set (0.00 sec)
相关文章
有用资源
mysql 参考教程 - 该教程包含有关 mysql 的更多信息:https://www.cainiaomax.com/mysql/

