2012-11-26 19 views
24

Qui è la mia query MySQLselezionare contatore incremento in mysql

select name from table; 

voglio selezionare un contatore incremento lungo name.How lato per fare questo. così i risultati attesi saranno

Jay 1 
roy 2 
ravi 3 
ram 4 

risposta

64
select name, 
     @rownum := @rownum + 1 as row_number 
from your_table 
cross join (select @rownum := 0) r 
order by name 

questo componente:

cross join (select @rownum := 0) r 

permette di init una variabile senza la necessità di una query separata. Quindi la prima query può anche essere suddiviso in due query in questo modo:

set @rownum := 0; 

select name, 
     @rownum := @rownum + 1 as row_number 
from your_table 
order by name; 

per esempio quando utilizzato in una stored procedure.

+2

Come stava cercando di dire Fabio Reche, abbiamo bisogno di scriverlo con un '@' di fronte a 'rownum + 1' ... non è supposto essere' @rownum: = @rownum + 1'? – ghiscoding

+0

Grazie, +1 per 'CROSS JOIN', risolto il problema di anther quando ho bisogno di raggruppare per clausola (map/reduce) –

+0

Il subrequest è usato per intializzare @rownum. – Genjo

Problemi correlati