Rang eines Datensatzes ermitteln

Elmey

Neuer Benutzer
Beiträge
2
Hi,

ich habe eine Tabelle, in der vierschiedene Zählerstände gespeichert werden. Jetzt würde ich gerne ermitteln, an wie vielter Position sich ein Datensatz im Rang befindet. Vielleicht ein Beispiel:

Code:
idx    count
1       10
2       45
3       12
4       31

Der Datensatz mit dem Index 4 hätte in der Rangfolge (sortiert nach "count") die Position 2. Mein aktueller ansatz wäre es, ein "SELECT idx FROM tabelle ORDER BY count" auszuführen, dann so lange durch die Ergebnisliste zu laufen, bis der gesuchte "idx" gefunden ist. Die Position, an der ich mein "idx" finde, ist dann gleichzeigit der Rang.

Aber: bei serh großen Tabellen müsste ich mir für die Methode jedes mal alle Daten ziehen. Deswegen: geht das nicht auch einfacher, sprich dass ich mir per SQL-Statement die Position eines Datensatzes nach einer Sortieroperation zurückliefern lasse?
 
Werbung:
Werbung:

akretschmer

Datenbank-Guru
Beiträge
9.042
In MSSQL könnte man das mit ROW_NUMBER() lösen, in MySQL scheint es auch Möglichkeiten zu geben. Probier mal das hier:
http://jimlife.wordpress.com/2008/09/09/displaying-row-number-rownum-in-mysql/

PS: Du kannst erstmal eine Spalte mit rownumber einbauen und dann auf dieses Suchergebniss eine weitere Abfrage auf die rownumber der gewünschten Position.

row_number() wäre an dieser Stelle aber auch falsch, besser wäre rank() oder dense_rank(). Row_number() zählt einfach nur dumm, die rank()-Funktionen berücksichtigen aber auch mehrere gleiche Plätze.

Allerdings kennt MySQL weder row_number() noch die rank()-Funktionen.
 
Oben