Heim  >  Artikel  >  Datenbank  >  Wie erhalte ich den n-thöchsten Wert in einer MySQL-Ergebnismenge? Lösungsfall mit MySQL LIMIT

Wie erhalte ich den n-thöchsten Wert in einer MySQL-Ergebnismenge? Lösungsfall mit MySQL LIMIT

php是最好的语言
php是最好的语言Original
2018-08-03 15:04:081216Durchsuche

Eines der schwierigsten Probleme in MySQL ist: Wie erhält man den nthöchsten Wert in der Ergebnismenge, z. B. die Abfrage, welches das zweitteuerste (oder n) teuerste Produkt ist, offensichtlich Sie? MAX kann nicht verwendet werden. Oder verwenden Sie eine Funktion wie MIN zum Abfragen und Abrufen. Wir können jedoch MySQL LIMIT verwenden, um solche Probleme zu lösen.

  • Sortieren Sie zunächst die Ergebnismenge in absteigender Reihenfolge.

  • Der zweite Schritt ist , verwenden Sie die LIMIT-Klausel, um das nteuerste Produkt zu erhalten.

Die allgemeine Abfrage lautet wie folgt:

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

Schauen wir uns ein Beispiel an. Die Struktur der products-Tabelle ist wie folgt:

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

Siehe unten Zeilendatensatz in der Produkttabelle:

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

Unsere Aufgabe ist es, das zweithöchste Produkt in der Ergebnismenge zu finden. Sie können die LIMIT-Klausel verwenden, um die zweite Zeile auszuwählen, z. B. die folgende Abfrage (Hinweis: Der Offset beginnt bei 0, daher müssen Sie den Beginn bei 1 angeben und dann eine Zeile mit Datensätzen verwenden):

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

Führen Sie die obige Abfrageanweisung aus und erhalten Sie die folgenden Ergebnisse:

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

Ebenso werden die Produktinformationen mit dem dritt- und vierthöchsten Verkaufspreis abgerufen: LIMIT 2, 1 und LIMIT 3, 1.

Verwandte Artikel:

So erhalten Sie den N-ten Datensatz in jeder MySQL-Gruppe

MSSQL implementiert MySQL-Limit-SQL-Anweisung

Ähnliche Videos:

Nutzung einschränken – Boolean Education Yan Shiba MySQL-Einführungsvideo-Tutorial

Das obige ist der detaillierte Inhalt vonWie erhalte ich den n-thöchsten Wert in einer MySQL-Ergebnismenge? Lösungsfall mit MySQL LIMIT. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn