Sử dụng:
SELECT t.id,
t.variety,
(SELECT COUNT(*) FROM TABLE WHERE id < t.id) +1 AS NUM
FROM TABLE t
Đây không phải là cách lý tưởng để thực hiện việc này, bởi vì truy vấn cho giá trị num sẽ thực thi cho mọi hàng được trả về. Ý tưởng tốt hơn là tạo NUMBERS
bảng, với một cột duy nhất chứa một số bắt đầu từ một số tăng dần đến một số quá lớn, sau đó nối &tham chiếu đến NUMBERS
bảng theo cách tương tự như ví dụ về biến sau đây.
Xếp hạng MySQL hoặc Thiếu Thứ hạng
Bạn có thể xác định một biến để có được chức năng số hàng psuedo, vì MySQL không có bất kỳ chức năng xếp hạng nào:
SELECT t.id,
t.variety,
@rownum := @rownum + 1 AS num
FROM TABLE t,
(SELECT @rownum := 0) r
-
SELECT @rownum := 0
xác định biến và đặt nó thành 0. -
r
là một truy vấn con / bí danh bảng, vì bạn sẽ gặp lỗi trong MySQL nếu bạn không xác định bí danh cho truy vấn con, ngay cả khi bạn không sử dụng nó.
Không thể sử dụng một biến trong chế độ xem MySQL
Nếu làm vậy, bạn sẽ gặp lỗi 1351 vì bạn không thể sử dụng một biến trong chế độ xem do thiết kế . hành vi của lỗi / tính năng được ghi lại tại đây .