要按塊檢索大量選擇,您需要使用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 to 30
登錄后復制
如果您想要另一組從 30 到 50 的行,請再次使用 LIMIT:
SELECT *FROM yourTableName ORDER BY yourColumnName LIMIT 30 ,20; 31 to 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;
登錄后復制
現(xiàn)在,由您來設置限制值。現(xiàn)在刪除臨時表是一個很好的做法。查詢如下:
DROP TEMPORARY TABLE yourTemporaryTableName;
登錄后復制
讓我們來演示上面的討論。首先創(chuàng)建一個表。創(chuàng)建表的查詢如下:
mysql> create table getRecordsDemo -> ( -> Id int NOT NULL AUTO_INCREMENT, -> PRIMARY KEY(Id) -> ); Query OK, 0 rows affected (1.68 sec)
登錄后復制
使用插入命令在表中插入一些記錄。查詢如下:
mysql> insert into getRecordsDemo values(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(); Query OK, 738 rows affected (0.34 sec) Records: 738 Duplicates: 0 Warnings: 0
登錄后復制
現(xiàn)在創(chuàng)建一個像上表一樣的臨時表。創(chuàng)建臨時表的查詢如下:
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
登錄后復制
現(xiàn)在您可以使用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 中按塊檢索大的選擇?的詳細內容,更多請關注www.92cms.cn其它相關文章!