天天看點

mysql查詢記錄條數上限_MySQL LIMIT:限制查詢結果的記錄條數

基本的文法格式如下:

[,]

LIMIT 接受一個或兩個數字參數。參數必須是一個整數常量。如果給定兩個參數,第一個參數指定第一個傳回記錄行的偏移量,第二個參數指定傳回記錄行的最大數目。

第一個參數“位置偏移量”訓示 MySQL 從哪一行開始顯示,是一個可選參數,如果不指定“位置偏移量”,将會從表中的第一條記錄開始(第一條記錄的位置偏移量是 0,第二條記錄的位置偏移量是 1,以此類推);第二個參數“行數”訓示傳回的記錄條數。

【執行個體 1】顯示 tb_students_info 表查詢結果的前 4 行,輸入的 SQL 語句和執行結果如下所示。

mysql> SELECT * FROM tb_students_info LIMIT 4;

+----+-------+---------+------+------+--------+------------+

| id | name | dept_id | age | sex | height | login_date |

+----+-------+---------+------+------+--------+------------+

| 1 | Dany | 1 | 25 | F | 160 | 2015-09-10 |

| 2 | Green | 3 | 23 | F | 158 | 2016-10-22 |

| 3 | Henry | 2 | 23 | M | 185 | 2015-05-31 |

| 4 | Jane | 1 | 22 | F | 162 | 2016-12-20 |

+----+-------+---------+------+------+--------+------------+

4 rows in set (0.00 sec)

由結果可以看到,該語句沒有指定傳回記錄的“位置偏移量”參數,顯示結果從第一行開始,“行數”參數為 4,是以傳回的結果為表中的前 4 行記錄。

若指定傳回記錄的開始位置,則傳回結果為從“位置偏移量”參數開始的指定行數,“行數”參數指定傳回的記錄條數。

【執行個體 2】在 tb_students_info 表中,使用 LIMIT 子句傳回從第 4 條記錄開始的行數為 5 的記錄,輸入的 SQL 語句和執行結果如下所示。

mysql> SELECT * FROM tb_students_info LIMIT 3,5;

+----+-------+---------+------+------+--------+------------+

| id | name | dept_id | age | sex | height | login_date |

+----+-------+---------+------+------+--------+------------+

| 4 | Jane | 1 | 22 | F | 162 | 2016-12-20 |

| 5 | Jim | 1 | 24 | M | 175 | 2016-01-15 |

| 6 | John | 2 | 21 | M | 172 | 2015-11-11 |

| 7 | Lily | 6 | 22 | F | 165 | 2016-02-26 |

| 8 | Susan | 4 | 23 | F | 170 | 2015-10-01 |

+----+-------+---------+------+------+--------+------------+

5 rows in set (0.00 sec)

由結果可以看到,該語句訓示 MySQL 傳回從第 4 條記錄行開始的之後的 5 條記錄,第一個數字“3”表示從第 4 行開始(位置偏移量從 0 開始,第 4 行的位置偏移量為 3),第二個數字 5 表示傳回的行數。

是以,帶一個參數的 LIMIT 指定從查詢結果的首行開始,唯一的參數表示傳回的行數,即“LIMIT n”與“LIMIT 0,n”等價。帶兩個參數的 LIMIT 可傳回從任何位置開始的指定行數的資料。

傳回第一行時,位置偏移量是 0。是以,“LIMIT 1,1”傳回第 2 行,而不是第 1 行。