Bảng MySQL trông như thế này:
Điểm hạng mục
-----------
Một 3.646
B 2.775
C 6.383
Đ 0,122
...
hiện hữu Điểm
Có một chỉ mục trên cột. Tôi muốn chọn các mục theo thứ tự điểm giảm dần và tôi cũng muốn biết thứ hạng của mục đó (tức là số hàng cụ thể đó trong tập kết quả). Trong ví dụ này, kết quả mong muốn là:
Xếp hạng vật phẩm
----------
C 1
A 2
B 3
D 4
Có cách nào hiệu quả để thực hiện việc này trên một bàn lớn không? Tôi muốn tránh các mục phụ nếu có thể.
PS: Có, tất nhiên thứ hạng trong tập kết quả sẽ luôn là 1, 2, 3, ... nhưng không, tôi không thể chỉ suy luận điều này trong ứng dụng, vì những kết quả này sẽ được xử lý thêm trong cơ sở dữ liệu chứ không phải trở lại chương trình ứng dụng.
ĐẶT @rank=0;
CHỌN Mục, @rank:=@rank+1 AS xếp hạng
TỪ bảng của bạn
ĐẶT HÀNG THEO ĐIỂM DESC;
Tùy chọn này sử dụng các biến phiên để mô phỏng chức năng đánh số dòng vì MySQL không hỗ trợ các chức năng phân tích.
这是一个liên kết đến một hướng dẫn hữu íchNó thảo luận sâu hơn về việc mô phỏng số hàng trong MySQL.
Tôi là một lập trình viên xuất sắc, rất giỏi!