Heim > Datenbank > MySQL-Tutorial > Hauptteil

So verwenden Sie rank() over, dense_rank() over und row_number() over in MySQL

PHPz
Freigeben: 2023-05-26 19:55:29
nach vorne
1571 Leute haben es durchsucht

So verwenden Sie rank() over, dense_rank() over und row_number() over in MySQL

Wenn Sie auf die obige Frage die diesmal verwendete Funktion nicht verwenden, lautet die Antwort wie folgt. Mit anderen Worten: Wenn Ihr MySQL die Funktion in diesem Artikel nicht verwenden kann, können Sie sie durch die folgende Syntaxlogik ersetzen Es.

SELECT t1.Score as Score, ( SELECT COUNT(DISTINCT t2.Score) FROM Scores t2 WHERE t2.Score >= t1.Score ) AS `Rank` 
FROM Scores t1 ORDER BY t1.Score DESC
Nach dem Login kopieren

rank() over (Geschäftslogik)

Funktion: Ranking nach Ermittlung der angegebenen Bedingungen. Wenn die Bedingungen gleich sind, sind die Rankings gleich und die Rankings sind diskontinuierlich.

Diese Funktion kann für die Rangfolge der Schüler verwendet werden, wobei zwei Schüler mit den gleichen Noten gleichgesetzt werden und der nächste Schüler seinen ihm zustehenden Platz räumt. Das heißt: 1 1 3 4 5 5 7

SELECT id, name, score, rank() over(ORDER BY score DESC) AS 'rank' FROM student
Nach dem Login kopieren

So verwenden Sie rank() over, dense_rank() over und row_number() over in MySQL

dense_rank() over (Geschäftslogik)

Funktion: Rangfolge nach Ermittlung der angegebenen Bedingungen. Wenn die Bedingungen gleich sind, wird die Rangfolge ermittelt gleich, und die Rangfolge wird diskontinuierlich sein.

Erläuterung: Es hat den gleichen Effekt wie rank() over. Der Unterschied besteht darin, dass die rank() over-Rangfolge dicht und kontinuierlich ist. Verwenden Sie diese Funktion, um das Ranking eines Schülers zu ermitteln. Im Falle eines Gleichstands werden zwei Studierende in der gleichen Rangliste gleichgestellt und der nächstplatzierte Student wird anhand der nächstplatzierten Rangliste ermittelt. Das heißt: 1 1 2 3 4 5 5 6

SELECT id, name, score, dense_rank() over(ORDER BY score DESC) AS 'rank' FROM student
Nach dem Login kopieren

So verwenden Sie rank() over, dense_rank() over und row_number() over in MySQL

row_number() über (Geschäftslogik)

Funktion: Rangfolge nach dem Ermitteln der angegebenen Bedingungen. Die Rangfolge ist unterschiedlich, wenn die Bedingungen gleich sind. und die Rangliste ist diskontinuierlich.

Auch wenn die abgefragten Werte gleich sind, sortiert diese Funktion sie fortlaufend, ohne zu berücksichtigen, ob sie parallel sind. Das heißt: 1 2 3 4 5 6

SELECT id, name, score, row_number() over(ORDER BY score DESC) AS 'rank' FROM student
Nach dem Login kopieren

So verwenden Sie rank() over, dense_rank() over und row_number() over in MySQL

Postscript

Die Geschäftslogik in der Funktion kann komplex sein und ist nicht auf ORDER BY beschränkt.

### 分班级排名
SELECT id, name, score, class, row_number() over(PARTITION BY class ORDER BY score DESC) AS 'rank' 
FROM student
Nach dem Login kopieren

So verwenden Sie rank() over, dense_rank() over und row_number() over in MySQL

Das obige ist der detaillierte Inhalt vonSo verwenden Sie rank() over, dense_rank() over und row_number() over in MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage