Mysql
 sql >> Database >  >> RDS >> Mysql

Rango di riga in una vista MySQL

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 .