MySQL에서 가장 까다로운 문제 중 하나는 결과 집합에서 n
번째로 높은 값을 얻는 방법입니다. 예를 들어 두 번째(또는 n
) 가장 높은 값을 쿼리하는 것입니다. MAX 또는 MIN과 같은 함수를 사용하여 쿼리하여 얻을 수 없는 값비싼 제품입니다. 그러나 MySQL LIMIT
을 사용하여 이러한 문제를 해결할 수 있습니다. n
个最高值,例如查询第二(或第n
)贵的产品是哪个,显然不能使用MAX或MIN这样的函数来查询获得。 但是,我们可以使用MySQL LIMIT
来解决这样的问题。
首先,按照降序对结果集进行排序。
第二步,使用LIMIT
子句获得第n
贵的产品。
通用查询如下:
SELECT column1, column2,... FROM table ORDER BY column1 DESC LIMIT nth-1, count;
下面我们来看看一个例子,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, 1
和 LIMIT 3, 1
먼저 결과 집합을 내림차순으로 정렬합니다.
rrreee 예를 살펴보겠습니다. products
테이블의 구조는 다음과 같습니다. - rrreee
rrreee
우리의 임무는 결과 집합에서 두 번째로 높은 가격의 제품을 찾는 것입니다. 다음 쿼리와 같이LIMIT
절을 사용하여 두 번째 행을 선택할 수 있습니다(참고: 오프셋은 0
에서 시작하므로 1
에서 지정). > 시작하고 한 행의 레코드를 가져옵니다): rrreee 위 쿼리문을 실행하면 다음과 같은 결과를 얻습니다. - rrreee
마찬가지로 판매 가격이 세 번째와 네 번째로 높은 제품 정보를 가져옵니다:LIMIT 2, 1 code> 및 <code>LIMIT 3, 1
. 🎜🎜관련 기사: 🎜🎜🎜Mysql의 각 그룹에서 N번째 레코드를 가져오는 방법🎜🎜🎜🎜mssql mysql 제한 sql 문 구현🎜🎜🎜관련 동영상: 🎜🎜🎜limit Usage-Boolean Education Yan Shiba mysql 소개 동영상 튜토리얼🎜 🎜위 내용은 MySQL 결과 세트에서 n번째로 높은 값을 얻는 방법은 무엇입니까? MySQL LIMIT를 사용한 솔루션 사례의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!