select name,
@rownum := @rownum + 1 as row_number
from your_table
cross join (select @rownum := 0) r
order by name
Phần này:
cross join (select @rownum := 0) r
làm cho nó có thể giới thiệu một biến mà không cần truy vấn riêng biệt. Vì vậy, truy vấn đầu tiên cũng có thể được chia thành hai truy vấn như sau:
set @rownum := 0;
select name,
@rownum := @rownum + 1 as row_number
from your_table
order by name;
chẳng hạn như khi được sử dụng trong một thủ tục được lưu trữ.