sql >> Databáze >  >> RDS >> Mysql

Plně dynamický dotaz na databázi místností

K odkazování na sloupce v klauzuli ORDER BY nelze použít proměnné vazby (parametry). Proměnnou bind však můžete použít ve výrazu jako:

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

Do příkazu CASE budete muset přidat samostatnou klauzuli WHEN pro každý sloupec/výraz, podle kterého chcete třídit, a možná budete potřebovat nebo chtít přidat klauzuli ELSE pro situace, kdy proměnná vazby :order neodpovídá žádné z vaše standardní případy.

Omezení vazebných proměnných platí také pro klauzuli where a projekci (výběrový seznam). Proměnné Bind mají ve vašich příkladech své vlastní hodnoty buď String nebo Int pro :order a :numberOfCoins.



  1. Může Hibernate fungovat se syntaxí ON DUPLICATE KEY UPDATE MySQL?

  2. Jsou primární klíče passé?

  3. Jaké jsou výhody a nevýhody provádění výpočtů v SQL vs. ve vaší aplikaci

  4. Zabití procesu mysqld