Heim >Datenbank >MySQL-Tutorial >Wie wähle ich die obersten N-Maximalwerte in MySQL aus: Nur N Zeilen zurückgeben oder Bindungen einbeziehen?

Wie wähle ich die obersten N-Maximalwerte in MySQL aus: Nur N Zeilen zurückgeben oder Bindungen einbeziehen?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-15 14:41:03556Durchsuche

How to Select the Top N Maximum Values in MySQL: Return Only N Rows or Include Ties?

MySQL: Auswählen der obersten N-Maximalwerte

Wenn versucht wird, die obersten N Zeilen mit den höchsten Werten in einem bestimmten Bereich abzurufen, kommt es oft zu Verwirrung Spalte. Die Frage ist, ob nur die obersten N Zeilen zurückgegeben werden sollen oder zusätzliche Zeilen einbezogen werden sollen, wenn sie denselben Maximalwert haben.

Um Ersteres zu erreichen, reicht die folgende Abfrage aus:

SELECT *
FROM t
ORDER BY value DESC
LIMIT N

Dies Die Abfrage stellt sicher, dass nur die obersten N Zeilen zurückgegeben werden, unabhängig davon, ob andere Zeilen denselben Maximalwert haben.

Wenn jedoch die Anforderung darin besteht, Zeilen mit demselben Maximalwert einzuschließen Werte ist eine komplexere Abfrage erforderlich:

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;

Alternativ kann die Abfrage vereinfacht werden:

SELECT *
FROM t
JOIN (
  SELECT value
  FROM t
  ORDER BY value
  LIMIT N
) tlim
ON t.value = tlim.value;

Zuletzt besteht eine andere Methode darin, die ANY-Funktion zu verwenden, diese ist jedoch mit MySQL kompatibel kann variieren:

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

Dieser Ansatz umfasst auch Zeilen mit demselben Maximalwert und bietet so eine konzeptionell klare Lösung des Problems.

Das obige ist der detaillierte Inhalt vonWie wähle ich die obersten N-Maximalwerte in MySQL aus: Nur N Zeilen zurückgeben oder Bindungen einbeziehen?. 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