Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie kann man die Top-N-Maximalwerte in MySQL effizient identifizieren?

DDD
Freigeben: 2024-11-12 05:40:01
Original
830 Leute haben es durchsucht

How to Efficiently Identify the Top N Maximum Values in MySQL?

Identifizieren der obersten N-Maximalwerte in MySQL

In vielen Szenarien werden die obersten N Zeilen mit den höchsten Werten in einer bestimmten Spalte abgefragt ist entscheidend. Es kann jedoch Verwirrung darüber entstehen, wie mit Fällen umzugehen ist, in denen mehrere Zeilen denselben Maximalwert haben, und ob alle Zeilen mit demselben Wert oder nur das oberste N einbezogen werden sollen.

Um dieses Problem zu beheben, können Sie das verwenden Folgende Methoden:

Option 1: Exakte oberste N

Mit der LIMIT-Klausel können Sie die genauen obersten N Zeilen in absteigender Reihenfolge nach Wert abrufen, mit Ausnahme aller Zeilen mit der gleiche Wert:

SELECT *
FROM t
ORDER BY value DESC
LIMIT N
Nach dem Login kopieren

Option 2: Inklusive Top N

Wenn Sie alle Zeilen mit demselben Maximalwert einschließen möchten, auch wenn es mehr als gibt N Zeilen mit diesem Wert können Sie den folgenden Ansatz verwenden:

Verbinden Sie die Tabelle mit einer Unterabfrage, die den minimalen Cutoff-Wert für das oberste N findet:

SELECT *
FROM t
JOIN (
  SELECT MIN(value) AS cutoff
  FROM (
    SELECT value
    FROM t
    ORDER BY value
    LIMIT N
  ) tlim
) tlim ON t.value >= tlim.cutoff
Nach dem Login kopieren

Alternativ können Sie verwenden eine vereinfachte Version:

SELECT *
FROM t
JOIN (
  SELECT value
  FROM t
  ORDER BY value
  LIMIT N
) tlim ON t.value = tlim.value
Nach dem Login kopieren

Konzeptionelle Alternative (optional)

Während die folgende Abfrage konzeptionell das gewünschte Verhalten erfasst, funktioniert sie möglicherweise nicht in MySQL:

SELECT *
FROM t
WHERE t.value >= ANY (SELECT value FROM t ORDER BY value LIMIT N)
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann man die Top-N-Maximalwerte in MySQL effizient identifizieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage