ホームページ >データベース >mysql チュートリアル >MySQL 結果セットで n 番目に大きい値を取得するにはどうすればよいですか? MySQL LIMITを利用した解決事例
MySQL で最も厄介な問題の 1 つは、結果セット内で n
番目に大きい値を取得する方法です。たとえば、2 番目 (または 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
私たちのタスクは、結果セット内で 2 番目に価格の高い製品を見つけることです。次のクエリのように、LIMIT
句を使用して 2 行目を選択できます (注: オフセットは 0
から始まるため、1
から指定します) > 開始し、レコードの行を取得します): rrreee 上記のクエリ ステートメントを実行すると、次の結果が得られます - rrreee
同様に、3 番目と 4 番目に高い販売価格の製品情報を取得します:LIMIT 2, 1 code> と <code>LIMIT 3, 1
。 🎜🎜関連記事: 🎜🎜🎜Mysqlの各グループでN番目のレコードを取得する方法🎜🎜🎜🎜mssql mysqlのlimit SQL文を実装する🎜🎜🎜関連動画: 🎜🎜🎜limit使い方 - ブール教育ヤン芝mysql入門ビデオアル🎜 🎜以上がMySQL 結果セットで n 番目に大きい値を取得するにはどうすればよいですか? MySQL LIMITを利用した解決事例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。