Heim >Datenbank >MySQL-Tutorial >Wie wähle ich die obersten N-Maximalwerte in MySQL aus: Nur N Zeilen zurückgeben oder Bindungen einbeziehen?
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!