2012-11-25 26 views
12

Giả sử tôi đã truy vấn SQL như thế này:Làm thế nào để thêm ROW INDEX như một cột để truy vấn SELECT SQL?

SELECT id, name, index(not a real column) FROM users ORDER BY rating DESC 

Tôi muốn thêm cột để cột được lựa chọn sẽ đại diện cho các chỉ số của các kỷ lục.

Ví dụ:

id name rating 
1  a  4 
2  b  2 
3  c  8 
4  d  5 

Đối với bảng này tôi muốn nhận được:

id name rating index 
3  c  8  1 
4  d  5  2 
1  a  4  3 
2  b  2  4 
+0

để bạn muốn số hàng trong bảng kết quả? –

+0

Không phải là một cái gì đó thiếu trong câu mà bạn mô tả ngắn gọn yêu cầu của bạn? "thêm cột vào các cột được chọn ..." NVM Tôi hiểu ý bạn là gì. Bạn cần số chỉ mục hàng của bảng kết quả. – bonCodigo

+0

chỉ mục của bản ghi là gì? – sashkello

Trả lời

14

Hãy thử các cách sau để nhận row_index:

set @row_num = 0; 
SELECT id,name,rating, @row_num := @row_num + 1 as row_index FROM users 
ORDER BY rating desc; 
+0

Nó hoạt động, nhưng dường như không có giải pháp thanh lịch cho điều đó. –

+0

Làm thế nào thanh lịch bạn đang tìm kiếm Yarin? :) Tôi cũng tự hỏi những gì bạn có nghĩa là do "tối thiểu của các ký tự trên văn bản này" ... – bonCodigo

+0

Tôi đã tìm kiếm một cái gì đó như INDEX() chức năng. Đối với điều 'tối thiểu', nó liên quan đến xác nhận Stackoverflow trên vùng văn bản khi thêm nhận xét: P –

1

Something như set @cnt=0; select *, @cnt:[email protected]+1 from users order by rating desc;

nên thực hiện công việc (Bạn sẽ cần phải thiết lập @cnt trước mỗi truy vấn mặc dù)

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