select name,
@rownum := @rownum + 1 as row_number
from your_table
cross join (select @rownum := 0) r
order by name
Cette partie :
cross join (select @rownum := 0) r
permet d'introduire une variable sans avoir besoin d'une requête séparée. Ainsi, la première requête pourrait également être décomposée en deux requêtes comme celle-ci :
set @rownum := 0;
select name,
@rownum := @rownum + 1 as row_number
from your_table
order by name;
par exemple lorsqu'il est utilisé dans une procédure stockée.