Zeilenpositionen nach der MySQL-Sortierung effizient ermitteln
In einer MySQL-Tabelle erfordert die Bestimmung der Position einer bestimmten Zeile nach der Sortierung basierend auf einer bestimmten Spalte (z. B. „Name“) einen optimierten Ansatz, um das Laden einer großen Ergebnismenge zu vermeiden.
Bedenken Sie die folgende Abfrage:
<code class="language-sql">SELECT x.id, x.position, x.name FROM (SELECT t.id, t.name, @rownum := @rownum + 1 AS position FROM TABLE t JOIN (SELECT @rownum := 0) r ORDER BY t.name) x WHERE x.name = 'Beta'</code>
Diese Abfrage verwendet eine Unterabfrage, um Zeilenpositionen basierend auf der ORDER BY-Klausel zuzuweisen und filtert dann die erforderliche Zeile „Beta“. Die Position wird mithilfe der Benutzervariablen @rownum berechnet, die für jede Zeile automatisch erhöht wird.
Alternativ können Sie die folgende Abfrage verwenden, um den Gleichstand anders zu behandeln:
<code class="language-sql">SELECT t.id, (SELECT COUNT(*) FROM TABLE x WHERE x.name < t.name) + 1 AS position FROM TABLE t WHERE t.name = 'Beta'</code>
Diese Methode gibt für parallele Zeilen dieselbe Position zurück und liefert möglicherweise eine andere Ergebnismenge als die erste Abfrage.
Das obige ist der detaillierte Inhalt vonWie kann ich nach der Bestellung effizient die Zeilenposition in MySQL finden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!