mysqls row_number () äquivalent: ein Vergleich
Die -Funktion von SQL Server weist Zeilen eindeutige sequentielle Zahlen zu, die das Zeilenranking und das Abrufen von Daten vereinfachen. MySQL hat jedoch kein direktes Äquivalent. Lassen Sie uns untersuchen, wie Sie ähnliche Ergebnisse erzielen können. ROW_NUMBER()
Problemumgehung für ältere MySQL -Versionen
Für MySQL-Versionen vor 8.0 können wir benutzerdefinierte Variablen verwenden, um: ROW_NUMBER()
zu simulieren
<code class="language-sql">SELECT t.*, @rownum := @rownum + 1 AS rank FROM YOUR_TABLE t, (SELECT @rownum := 0) r;</code>
bis 0 und erhöht es für jede Zeile, wodurch ein sequentieller Rang erstellt wird. @rownum
Nachahmung der Partition nach und bestellen nach
SQL Servers verwendet häufig ROW_NUMBER()
und PARTITION BY
Klauseln. Die Replikation dieser in älteren MySQL erfordert eine komplexere variablere Handhabung, die Zähler für jede Partition zurücksetzen. Dieser Ansatz wird mit mehreren Partitionierungsspalten weniger effizient und fehleranfälliger.
ORDER BY
MySQL 8.0 und spätere Versionen bieten Fensterfunktionen, einschließlich
, und bietet eine sauberere und effizientere Alternative:
RANK()
<code class="language-sql">SELECT col1, col2, RANK() OVER (PARTITION BY col1, col2 ORDER BY col3 DESC) AS intRow FROM Table1;</code>
und ROW_NUMBER()
wider und bietet eine signifikant verbesserte Lösung für komplexe Ranking -Szenarien. Diese Methode wird für MySQL 8.0 und später empfohlen. PARTITION BY
Das obige ist der detaillierte Inhalt vonWie kann ich die Funktionalität von SQL Server in MySQL replizieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!