Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Consulta dinâmica completa do banco de dados da sala


Você não pode usar variáveis ​​de ligação (parâmetros) para fazer referência a colunas na cláusula ORDER BY. No entanto, você pode usar a variável bind em uma expressão assim:
@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>>

Você precisará adicionar uma cláusula WHEN separada à instrução CASE para cada coluna/expressão pela qual deseja classificar e pode precisar ou desejar adicionar uma cláusula ELSE para as situações em que a variável de ligação :order não corresponde a nenhuma das seus casos padrão.

A restrição nas variáveis ​​de ligação também vale para a cláusula where e a projeção (lista de seleção). A variável Bind tem seus próprios valores em seus exemplos String ou Int para :order e :numberOfCoins respectivamente.