Heim >Datenbank >MySQL-Tutorial >Wie kann ich nach der Bestellung effizient die Zeilenposition in MySQL finden?

Wie kann ich nach der Bestellung effizient die Zeilenposition in MySQL finden?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-18 02:27:09466Durchsuche

How Can I Efficiently Find the Row Position in MySQL After Ordering?

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!

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