MySQL Hur man får order på radnummer

Dessa riktningar går igenom hur man kan visa radenummer ordning / rank för resultatuppsättning som erhållits från att utföra en SQL-fråga. Ett exempel med genomgångsförklaring finns.

Låt oss gå igenom ett exempel.

Låt oss först skapa en anställd tabell i vår db.

Fråga 1.1

mysql> skapa bord anställd (id smallint (5),
namn varchar (15), lön smallint (5));

Sätt sedan in poster i anställdabellen.

Fråga 1.2

mysql> Infoga medarbetarnas värden (1, 'jon', 1000);
mysql> Infoga medarbetarnas värden (2, 'darvin', 3500);
mysql> Infoga medarbetarnas värden (3, 'krik', 500);
mysql> Infoga i anställningsvärden (4, 'rook', 1500);
mysql> Infoga medarbetarnas värden (5, 'alex', 100);

Visa nu alla poster från anställd tabellen.

Fråga 1.3

mysql> välj * från anställd; + ------ + -------- + -------- + | id | namn | lön | + ------ + -------- + -------- + | 1 | jon | 1000 | | 2 | darvin | 3500 | | 3 | krik | 500 | | 4 | rook | 1500 | | 5 | alex | 100 | + ------ + -------- + -------- + 5 rader i set (0.00 sek)

Nu, låt oss hämta alla poster från anställda bord sorterade efter lön.

Fråga 1.4

mysql> välj * från anställd order efter lön; + ------ + -------- + -------- + | id | namn | lön | + ------ + -------- + -------- + | 5 | alex | 100 | | 3 | krik | 500 | | 1 | jon | 1000 | | 4 | rook | 1500 | | 2 | darvin | 3500 | + ------ + -------- + -------- + 5 rader i set (0.00 sek) 

Nu vill vi verkligen ha en extra kolumn som kommer att springa från början vid 1 (första raden) till sista raden. Det här är så att vi kan visa radordningen i tabellen. Här är frågan.

mysql> set @row_num = 0;
SELECT @row_num: = @row_num + 1 som radnummer, id, namn, lön FROM anställd
Beställa av lön;

+ ------------ + ------ + -------- + -------- + | row_number | id | namn | lön | + ------------ + ------ + -------- + -------- + | 1 | 5 | alex | 100 | | 2 | 3 | krik | 500 | | 3 | 1 | jon | 1000 | | 4 | 4 | rook | 1500 | | 5 | 2 | darvin | 3500 | + ------------ + ------ + -------- + -------- + 5 rader i uppsättning (0,00 sek) 

Nu kan du se ytterligare kolumnen (ROW_NUMBER) som visar radordern. Detta är mycket användbart när du visar posterna.

Låt oss gräva lite djupare på hur ovanstående fråga 1.4 fungerar för att få radnummerorder.

set @row_num = 0;

Detta använder @row_num som användardefinierad variabel för att hålla radräkningen och tilldelas ett värde 0.

SELECT @row_num: = @row_num + 1 som radnummer

Här ökar vi variabeln @row_num med 1, varje gång när id kolumnändringar och vi håller värdet det hade i föregående rad. Detta fortsätter att öka variabeln @row_num tills den når sista raden i id kolumn med användning av 'ROW_NUMBER' för kolumnalias.