Bạn không thể sử dụng biến ràng buộc (tham số) cho các cột tham chiếu trong mệnh đề ORDER BY. Tuy nhiên, bạn có thể sử dụng biến liên kết trong một biểu thức như sau:
@Query("select * from coin ORDER BY
CASE :order
WHEN 'percent_change_24h' THEN percent_change_24h
WHEN 'other_column_name' THEN other_column_name
END asc limit :numberOfCoins")
fun getAllTop(order: String, numberOfCoins: Int): Flowable<List<CoinDB>>
Bạn sẽ cần thêm một mệnh đề WHEN riêng biệt vào câu lệnh CASE cho mỗi cột / biểu thức bạn muốn sắp xếp theo và bạn có thể cần hoặc muốn thêm một mệnh đề ELSE cho các trường hợp mà biến:order bind không khớp với bất kỳ các trường hợp tiêu chuẩn của bạn.
Hạn chế về các biến ràng buộc cũng đúng đối với mệnh đề where và phép chiếu (danh sách chọn). Biến Bind có các giá trị riêng trong ví dụ của bạn, String hoặc Int tương ứng cho:order và:numberOfCoins.