Brug:
SELECT t.id,
t.variety,
(SELECT COUNT(*) FROM TABLE WHERE id < t.id) +1 AS NUM
FROM TABLE t
Det er ikke en ideel måde at gøre dette på, fordi forespørgslen efter num-værdien udføres for hver returneret række. En bedre idé ville være at oprette en NUMBERS
tabel, med en enkelt kolonne, der indeholder et tal, der starter med et, der stiger til et uhyrligt stort tal, og tilslut derefter og referer til NUMRE
tabel på en måde, der ligner det variabeleksempel, der følger.
MySQL-rangering eller mangel på samme
Du kan definere en variabel for at få psuedo rækkenummerfunktionalitet, fordi MySQL ikke har nogen rangeringsfunktioner:
SELECT t.id,
t.variety,
@rownum := @rownum + 1 AS num
FROM TABLE t,
(SELECT @rownum := 0) r
-
SELECT @rownum :=0 definerer variablen og sætter den til nul. r
er et underforespørgsel/tabelalias, fordi du får en fejl i MySQL, hvis du ikke definerer et alias for en underforespørgsel, selvom du ikke bruger det.
Kan ikke bruge en variabel i en MySQL-visning
Hvis du gør det, får du fejlen 1351, fordi du kan ikke bruge en variabel i en visning på grund af design . fejl/funktionsadfærd er dokumenteret her .