sql >> Databasteknik >  >> RDS >> Mysql

ROW_NUMBER() i MySQL

Det finns ingen rankningsfunktion i MySQL. Det närmaste du kan komma är att använda en variabel:

SELECT t.*, 
       @rownum := @rownum + 1 AS rank
  FROM YOUR_TABLE t, 
       (SELECT @rownum := 0) r

så hur skulle det fungera i mitt fall? Jag skulle behöva två variabler, en för vardera av col1 och col2? Col2 skulle behöva återställas på något sätt när col1 ändrades...?

Ja. Om det var Oracle skulle du kunna använda LEAD-funktionen för att nå nästa värde. Tack och lov täcker Quassnoi logiken för vad du behöver att implementera i MySQL .



  1. Varje GROUP BY-uttryck måste innehålla minst en kolumn som inte är en yttre referens

  2. Återställer exempel på DW Database AdventureWorksDW2019

  3. Få poster med högsta/minsta <whatever> per grupp

  4. Hur man skriver en funktion som returnerar text eller heltalsvärden?