sql >> データベース >  >> RDS >> Mysql

ルームデータベースの完全な動的クエリ

    バインド変数(パラメーター)を使用して、ORDERBY句の列を参照することはできません。ただし、次のような式でバインド変数を使用できます。

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

    並べ替える列/式ごとに個別のWHEN句をCASEステートメントに追加する必要があります。また、:orderバインド変数がいずれにも一致しない状況では、ELSE句を追加する必要があるか、追加する必要があります。標準的なケース。

    バインド変数の制限は、where句と射影(選択リスト)にも当てはまります。バインド変数は、例では:orderと:numberOfCoinsに対してそれぞれStringまたはIntのいずれかの独自の値を持っています。



    1. PL/SQL変数に格納されている値をIN句に渡します

    2. PHPを使用してMySQLから過去3分間のレコードを選択する方法

    3. MySQL SELECTはここ数日ですか?

    4. テーブル全体で変更データキャプチャ(CDC)を有効にする方法、またはSQLServerの列のリストを使用してテーブルでCDCを有効にする方法