giovedì 3 febbraio 2011

Mysql: aggiungere il numero di record progressivo estratto da una query

Se abbiamo una query del tipo:

SELECT nome,cognome FROM utenti WHERE nome = 'Pippo'
Il cui risultato sara':

+-----+-------+
|nome |cognome|
+-----+-------+
|Pippo|xxxxx  |
+-----+-------+
|Pippo|YYYYY  |
+-----+-------+
2 rows in set (0.01 sec)


E desideriamo che ogni record sia preceduto dal numero progressivo di estrazione, come nell'esempio seguente:


+------+-----+-------+
|numero|nome |cognome|
+------+-----+-------+
|     1|Pippo|xxxxx  |
+------+-----+-------+
|     2|Pippo|YYYYY  |
+------+-----+-------+
2 rows in set (0.01 sec)


Dobbiamo prima eseguire una query per assegnare 0 ad una variabile (contatore) globale:
set @N = 0;
Il cui output sara':
Query OK, 0 rows affected (0.27 sec)

Seguita dalla query originale, aggiornata per l'utilizzo del contatore:
SELECT @N := @N +1 AS numero,nome,cognome FROM utenti WHERE nome = 'Pippo'

ATTENZIONE: ricordarsi di azzerare la variabile contatore prima di ogni query.

Nessun commento: