2012-11-26 35 views
24

Đây là tôi truy vấn mysqlchọn truy cập tăng trong mysql

select name from table; 

Tôi muốn chọn một quầy increment cùng bên name.How để làm điều này. nên sản lượng dự kiến ​​sẽ

Jay 1 
roy 2 
ravi 3 
ram 4 

Trả lời

64
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ể để init một biến mà không cần một truy vấn riêng biệt. Vì vậy, truy vấn đầu tiên cũng có thể được chia nhỏ 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; 

ví dụ khi được sử dụng trong quy trình được lưu trữ.

+2

Như Fabio Reche đã cố gắng nói, chúng ta cần phải viết nó bằng '@' trước «rownum + 1' ... không phải là giả sử là' @rownum: = @rownum + 1'? – ghiscoding

+0

Cảm ơn, +1 cho 'CROSS JOIN', đã giải quyết vấn đề về lớp phủ khi tôi cần nhóm theo bản sao (bản đồ/giảm) –

+0

Yêu cầu con được sử dụng để intializing @rownum. – Genjo

Các vấn đề liên quan