MySQL 결과 세트에서 n번째로 높은 값을 얻는 방법은 무엇입니까? MySQL LIMIT를 사용한 솔루션 사례

php是最好的语言
풀어 주다: 2018-08-03 15:04:08
원래의
1261명이 탐색했습니다.

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, 1LIMIT 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿