sql >> Base de Datos >  >> RDS >> Mysql

Consulta dinámica completa de la base de datos de la sala

No puede usar variables de vinculación (parámetros) para hacer referencia a columnas en la cláusula ORDER BY. Sin embargo, puede usar la variable de vinculación en una expresión como esta:

@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>>

Deberá agregar una cláusula WHEN separada a la instrucción CASE para cada columna/expresión por la que desee ordenar, y es posible que necesite o desee agregar una cláusula ELSE para las situaciones en las que la variable de vinculación de orden no coincide con ninguno de sus casos estándar.

La restricción sobre las variables de vinculación también es válida para la cláusula where y la proyección (lista de selección). La variable Bind tiene sus propios valores en sus ejemplos, ya sea String o Int para :order y :numberOfCoins respectivamente.