select name,
@rownum := @rownum + 1 as row_number
from your_table
cross join (select @rownum := 0) r
order by name
Questa parte:
cross join (select @rownum := 0) r
consente di introdurre una variabile senza la necessità di una query separata. Quindi la prima query potrebbe anche essere suddivisa in due query come questa:
set @rownum := 0;
select name,
@rownum := @rownum + 1 as row_number
from your_table
order by name;
ad esempio quando viene utilizzato in una procedura memorizzata.