sql >> Databasteknik >  >> RDS >> Mysql

Rumsdatabas full dynamisk fråga

Du kan inte använda bindningsvariabler (parametrar) för att referera till kolumner i ORDER BY-satsen. Du kan dock använda bindningsvariabeln i ett uttryck som så:

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

Du kommer att behöva lägga till en separat WHEN-sats till CASE-satsen för varje kolumn/uttryck du vill sortera efter, och du kan behöva eller vill lägga till en ELSE-sats för de situationer där :order bind-variabeln inte matchar någon av dina standardfall.

Begränsningen för bindningsvariabler gäller även för where-satsen och projektionen (välj lista). Bind-variabler har sina egna värden i dina exempel, antingen String eller Int för :order respektive :numberOfCoins.



  1. fel 1064(42000) när du försöker köra mysqldump-kommandot

  2. node-mysql-anslutningspoolning

  3. Hur ska jag lagra mina sha512 saltade och hashade lösenord i MySQL?

  4. Hur man skickar my sql-resultatet till styrenheten i codeigniter som en variabel