Usa:
SELECT t.id,
t.variety,
(SELECT COUNT(*) FROM TABLE WHERE id < t.id) +1 AS NUM
FROM TABLE t
Non è un modo ideale per farlo, perché la query per il valore num verrà eseguita per ogni riga restituita. Un'idea migliore sarebbe quella di creare un NUMBERS
tabella, con una singola colonna contenente un numero che inizia da uno che aumenta fino a diventare un numero scandalosamente grande, quindi unire e fare riferimento a NUMBERS
tabella in modo simile all'esempio di variabile che segue.
Classificazione MySQL o mancanza di essa
Puoi definire una variabile per ottenere la funzionalità del numero di riga psuedo, perché MySQL non ha alcuna funzione di classificazione:
SELECT t.id,
t.variety,
@rownum := @rownum + 1 AS num
FROM TABLE t,
(SELECT @rownum := 0) r
- Il
SELECT @rownum := 0
definisce la variabile e la imposta a zero. - Il
r
è un alias di sottoquery/tabella, perché riceverai un errore in MySQL se non definisci un alias per una sottoquery, anche se non lo usi.
Impossibile utilizzare una variabile in una vista MySQL
Se lo fai, riceverai l'errore 1351, perché non puoi utilizzare una variabile in una vista a causa del design . Il comportamento di bug/feature è documentato qui .