Gebruik:
SELECT t.id,
t.variety,
(SELECT COUNT(*) FROM TABLE WHERE id < t.id) +1 AS NUM
FROM TABLE t
Het is geen ideale manier om dit te doen, omdat de query voor de num-waarde wordt uitgevoerd voor elke geretourneerde rij. Een beter idee zou zijn om een NUMBERS
. te maken tabel, met een enkele kolom met een nummer dat begint bij één dat oploopt tot een waanzinnig groot aantal, en voeg je vervolgens bij en verwijs je naar de NUMBERS
tabel op een manier die vergelijkbaar is met het variabele voorbeeld dat volgt.
MySQL-rangschikking, of het ontbreken daarvan
U kunt een variabele definiëren om pseudorijnummerfunctionaliteit te krijgen, omdat MySQL geen rangschikkingsfuncties heeft:
SELECT t.id,
t.variety,
@rownum := @rownum + 1 AS num
FROM TABLE t,
(SELECT @rownum := 0) r
- De
SELECT @rownum := 0
definieert de variabele en stelt deze in op nul. - De
r
is een subquery/tabelalias, omdat u een foutmelding krijgt in MySQL als u geen alias voor een subquery definieert, zelfs als u deze niet gebruikt.
Kan geen variabele gebruiken in een MySQL-weergave
Als je dat doet, krijg je de 1351-foutmelding, omdat je kunt vanwege het ontwerp geen variabele in een weergave gebruiken . Het bug/feature-gedrag wordt hier gedocumenteerd .