>데이터 베이스 >MySQL 튜토리얼 >mysql에서 쿼리 수를 제한하는 방법

mysql에서 쿼리 수를 제한하는 방법

青灯夜游
青灯夜游원래의
2021-12-27 18:00:525638검색

mysql에서는 "LIMIT" 절을 사용하여 쿼리 수를 제한할 수 있습니다. 이 절은 SELECT 쿼리 결과에 의해 반환되는 항목 수를 제한할 수 있습니다. 구문은 "SELECT column1, column2,... FROM table LIMIT입니다. 오프셋, 개수;" .

mysql에서 쿼리 수를 제한하는 방법

이 튜토리얼의 운영 환경: windows7 시스템, mysql8 버전, Dell G3 컴퓨터.

데이터 테이블에 수만 개의 데이터가 있는 경우 테이블의 모든 데이터를 한 번에 쿼리하면 데이터 반환 속도가 느려지고 데이터베이스 서버에 많은 부담을 줄 수 있습니다. 이때 LIMIT 절을 사용하여 반환되는 쿼리 결과의 개수를 제한할 수 있습니다.

LIMIT는 쿼리 결과가 표시되기 시작하는 레코드와 총 표시되는 레코드 수를 지정하는 데 사용되는 MySQL의 특수 키워드입니다.

1. MySQL LIMIT 절 소개

SELECT 문의 LIMIT 절을 사용하여 결과 집합의 행 수를 제한하세요. LIMIT 절은 하나 또는 두 개의 매개변수를 허용합니다. 두 매개변수의 값은 모두 0 또는 양의 정수여야 합니다. SELECT语句中使用LIMIT子句来约束结果集中的行数。LIMIT子句接受一个或两个参数。两个参数的值必须为零或正整数。

下面说明了两个参数的LIMIT子句语法:

SELECT 
    column1,column2,...
FROM
    table
LIMIT offset , count;

我们来查看LIMIT子句参数:

  • offset参数指定要返回的第一行的偏移量。第一行的偏移量为0,而不是1
  • count指定要返回的最大行数。

mysql에서 쿼리 수를 제한하는 방법

当您使用带有一个参数的LIMIT子句时,此参数将用于确定从结果集的开头返回的最大行数。

SELECT 
    column1,column2,...
FROM
    table
LIMIT count;

上面的查询等同于下面接受两个参数的LIMIT子句的查询:

SELECT 
    column1,column2,...
FROM
    table
LIMIT 0 , count;

2. 使用MySQL LIMIT获取前N行

可以使用LIMIT子句来选择表中的前N行记录,如下所示:

SELECT 
    column1,column2,...
FROM
    table
LIMIT N;

例如,要查询employees表中前5个客户,请使用以下查询:

SELECT customernumber, customername, creditlimit FROM customers LIMIT 5;

或者 -

SELECT customernumber, customername, creditlimit FROM customers LIMIT 0,5;

执行上面语句,得到以下结果 -

mysql> SELECT customernumber, customername, creditlimit FROM customers LIMIT 5;
+----------------+----------------------------+-------------+
| customernumber | customername               | creditlimit |
+----------------+----------------------------+-------------+
|            103 | Atelier graphique          | 21000       |
|            112 | Signal Gift Stores         | 71800       |
|            114 | Australian Collectors, Co. | 117300      |
|            119 | La Rochelle Gifts          | 118200      |
|            121 | Baane Mini Imports         | 81700       |
+----------------+----------------------------+-------------+
5 rows in set

3. 使用MySQL LIMIT获得最高和最低的值

LIMIT子句经常与ORDER BY子句一起使用。首先,使用ORDER BY子句根据特定条件对结果集进行排序,然后使用LIMIT子句来查找最小或最大值。

注意:ORDER BY子句按指定字段排序的使用。

请参见示例数据库(yiibaidb)中的以下customers表,其表结构如下所示 -

mysql> desc customers;
+------------------------+---------------+------+-----+---------+-------+
| Field                  | Type          | Null | Key | Default | Extra |
+------------------------+---------------+------+-----+---------+-------+
| customerNumber         | int(11)       | NO   | PRI | NULL    |       |
| customerName           | varchar(50)   | NO   |     | NULL    |       |
| contactLastName        | varchar(50)   | NO   |     | NULL    |       |
| contactFirstName       | varchar(50)   | NO   |     | NULL    |       |
| phone                  | varchar(50)   | NO   |     | NULL    |       |
| addressLine1           | varchar(50)   | NO   |     | NULL    |       |
| addressLine2           | varchar(50)   | YES  |     | NULL    |       |
| city                   | varchar(50)   | NO   |     | NULL    |       |
| state                  | varchar(50)   | YES  |     | NULL    |       |
| postalCode             | varchar(15)   | YES  |     | NULL    |       |
| country                | varchar(50)   | NO   |     | NULL    |       |
| salesRepEmployeeNumber | int(11)       | YES  | MUL | NULL    |       |
| creditLimit            | decimal(10,2) | YES  |     | NULL    |       |
+------------------------+---------------+------+-----+---------+-------+
13 rows in set

例如,要查询信用额度最高的前五名客户,请使用以下查询:

SELECT customernumber, customername, creditlimit
FROM customers
ORDER BY creditlimit DESC
LIMIT 5;

执行上面查询语句,得到以下结果 -

mysql> SELECT customernumber, customername, creditlimit
FROM customers
ORDER BY creditlimit DESC
LIMIT 5;
+----------------+------------------------------+-------------+
| customernumber | customername                 | creditlimit |
+----------------+------------------------------+-------------+
|            141 | Euro+ Shopping Channel       | 227600      |
|            124 | Mini Gifts Distributors Ltd. | 210500      |
|            298 | Vida Sport, Ltd              | 141300      |
|            151 | Muscle Machine Inc           | 138500      |
|            187 | AV Stores, Co.               | 136800      |
+----------------+------------------------------+-------------+
5 rows in set

以下查询将返回信用限额最低的五位客户:

SELECT customernumber, customername, creditlimit
FROM customers
ORDER BY
 creditlimit ASC
LIMIT 5;

4. 使用MySQL LIMIT获得第n个最高值

MySQL中最棘手的问题之一是:如何获得结果集中的第n个最高值,例如查询第二(或第n)贵的产品是哪个,显然不能使用MAX或MIN这样的函数来查询获得。 但是,我们可以使用MySQL LIMIT来解决这样的问题。

  • 首先,按照降序对结果集进行排序。
  • 第二步,使用LIMIT子句获得第n贵的产品。

通用查询如下:

SELECT 
    column1, column2,...
FROM
    table
ORDER BY column1 DESC
LIMIT nth-1, count;

下面我们来看看一个例子,将使用示例数据库(yiibaidb)中的产品(products)表来进行演示。products表的结构如下所示 -

mysql> desc products;
+--------------------+---------------+------+-----+---------+-------+
| Field              | Type          | Null | Key | Default | Extra |
+--------------------+---------------+------+-----+---------+-------+
| productCode        | varchar(15)   | NO   | PRI | NULL    |       |
| productName        | varchar(70)   | NO   |     | NULL    |       |
| productLine        | varchar(50)   | NO   | MUL | NULL    |       |
| productScale       | varchar(10)   | NO   |     | NULL    |       |
| productVendor      | varchar(50)   | NO   |     | NULL    |       |
| productDescription | text          | NO   |     | NULL    |       |
| quantityInStock    | smallint(6)   | NO   |     | NULL    |       |
| buyPrice           | decimal(10,2) | NO   |     | NULL    |       |
| MSRP               | decimal(10,2) | NO   |     | NULL    |       |
+--------------------+---------------+------+-----+---------+-------+
9 rows in set

查看以下产品表中的行记录:

mysql> SELECT productCode, productName, buyprice
FROM products
ORDER BY
 buyprice DESC;
+-------------+--------------------------------------+----------+
| productCode | productName                          | buyprice |
+-------------+--------------------------------------+----------+
| S10_4962    | 1962 LanciaA Delta 16V               | 103.42   |
| S18_2238    | 1998 Chrysler Plymouth Prowler       | 101.51   |
| S10_1949    | 1952 Alpine Renault 1300             | 98.58    |
| S24_3856    | 1956 Porsche 356A Coupe              | 98.3     |
| S12_1108    | 2001 Ferrari Enzo                    | 95.59    |
| S12_1099    | 1968 Ford Mustang                    | 95.34    |
... ....
+-------------+--------------------------------------+----------+
110 rows in set

我们的任务找出结果集中价格第二高的产品。可以使用LIMIT子句来选择第二行,如以下查询(注意:偏移量从0开始,所以要指定从1开始,然后取一行记录):

SELECT productCode, productName, buyprice FROM  products
ORDER BY buyprice DESC
LIMIT 1, 1;

执行上面查询语句,得到以下结果 -

mysql> SELECT productCode, productName, buyprice FROM  products
ORDER BY buyprice DESC
LIMIT 1, 1;
+-------------+--------------------------------+----------+
| productCode | productName                    | buyprice |
+-------------+--------------------------------+----------+
| S18_2238    | 1998 Chrysler Plymouth Prowler | 101.51   |
+-------------+--------------------------------+----------+
1 row in set

类似的,获取售价第三高、第四高的产品信息为:LIMIT 2, 1LIMIT 3, 1

두 매개변수에 대한 LIMIT 절 구문은 아래에 설명되어 있습니다.

rrreee LIMIT 절 매개변수를 살펴보겠습니다.

  • offset 매개변수는 반환될 첫 번째 행의 오프셋을 지정합니다. 첫 번째 줄의 오프셋은 1이 아니라 0입니다.
  • count반환할 최대 행 수를 지정합니다.
1. png🎜🎜하나의 매개변수와 함께 LIMIT 절을 사용하는 경우 이 매개변수는 결과 집합의 시작 부분에서 반환할 최대 행 수를 결정하는 데 사용됩니다. 🎜rrreee🎜위 쿼리는 두 개의 매개변수가 있는 LIMIT 절을 허용하는 다음 쿼리와 동일합니다. 🎜rrreee

2. MySQL LIMIT는 첫 번째 N 행을 가져옵니다🎜🎜아래 표시된 대로 LIMIT 절을 사용하여 테이블에서 레코드의 첫 번째 N 행을 선택할 수 있습니다. 🎜rrreee🎜예를 들어 , 를 쿼리하려면 직원 테이블의 첫 번째 5 고객에 대해 다음 쿼리를 사용하십시오. 🎜rrreee🎜 또는 -🎜rrreee🎜 위 명령문을 실행하면 다음 결과가 나타납니다. -🎜rrreee3. MySQL LIMIT를 사용하여 최고값과 최저값 얻기 ​​🎜🎜 LIMIT 절은 종종 다음과 함께 사용됩니다. ORDER BY 절. 먼저 ORDER BY 절을 사용하여 특정 기준에 따라 결과 집합을 정렬한 다음 LIMIT 절을 사용하여 최소값 또는 최대값을 찾습니다. 🎜🎜🎜참고: 지정된 필드별로 정렬하려면 ORDER BY 절을 사용하세요. 🎜🎜🎜샘플 데이터베이스(yiibaidb)에서 다음 customers 테이블을 참조하세요. 테이블 구조는 다음과 같습니다. - 🎜rrreee🎜예를 들어 신용 한도가 가장 높은 상위 5명의 고객을 쿼리하려면 다음을 사용하세요. 다음 쿼리 :🎜rrreee🎜위 쿼리 문을 실행하여 다음 결과를 얻습니다. -🎜rrreee🎜다음 쿼리는 신용 한도가 가장 낮은 5명의 고객을 반환합니다.🎜rrreee

🎜🎜4. MySQL LIMIT를 사용하여 n번째로 높은 값을 얻으세요 🎜🎜MySQL에서 가장 어려운 문제 중 하나는 다음과 같이 결과 집합에서 n번째로 높은 값을 얻는 방법입니다. 두 번째(또는 n) 쿼리 중 가장 비싼 제품은 무엇입니까? 물론 MAX 또는 MIN과 같은 함수를 사용하여 쿼리할 수는 없습니다. 그러나 MySQL LIMIT를 사용하여 이러한 문제를 해결할 수 있습니다. 🎜
  • 먼저 결과 집합을 내림차순으로 정렬합니다.
  • 두 번째 단계LIMIT 절을 사용하여 n번째로 가장 비싼 제품을 얻는 것입니다.
🎜일반 쿼리는 다음과 같습니다. 🎜rrreee🎜샘플 데이터베이스(yiibaidb)의 제품(products) 테이블을 사용하여 아래 예를 살펴보겠습니다. 데모. products 테이블의 구조는 다음과 같습니다. - 🎜rrreee🎜다음 제품 테이블의 행을 살펴보세요. 🎜rrreee🎜 우리의 임무는 결과 집합에서 두 번째로 높은 가격의 제품을 찾는 것입니다. 다음 쿼리와 같이 LIMIT 절을 사용하여 두 번째 행을 선택할 수 있습니다(참고: 오프셋은 0에서 시작하므로 1에서 지정). > 시작하고 한 줄의 레코드를 가져옵니다): 🎜rrreee🎜위 쿼리문을 실행하면 다음과 같은 결과가 나옵니다. -🎜rrreee🎜마찬가지로 세 번째와 네 번째로 높은 판매 가격의 제품 정보를 가져옵니다: LIMIT 2, 1 code> 및 <code>LIMIT 3, 1. 🎜🎜【관련 추천: 🎜mysql 비디오 튜토리얼🎜】🎜

위 내용은 mysql에서 쿼리 수를 제한하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.