web-dev-qa-db-ja.com

ASCまたはDESC変数による会議室DAOの順序

@Query関数@Daoブールパラメータを持つインターフェースisAscは順序を決定します。

@Query("SELECT * FROM Persons ORDER BY first_name (:isAsc ? ASC : DESC)")
List<Person> getPersonsAlphabetically(boolean isAsc);

どうやらこれは許可されていません。この辺りに回避策はありますか?

編集:

唯一の違いはASCDESCであるため、2つのクエリ(下記)を使用するのは奇妙に思われました。

@Query("SELECT * FROM Persons ORDER BY last_name ASC")
List<Person> getPersonsSortByAscLastName();

@Query("SELECT * FROM Persons ORDER BY last_name DESC")
List<Person> getPersonsSortByDescLastName();
9
aLL

使用する CASE Expression for SQLiteこれをRoom DAOで実現するには、

@Query("SELECT * FROM Persons ORDER BY CASE WHEN :isAsc = 1 THEN first_name END ASC, CASE WHEN :isAsc = 0 THEN first_name END DESC")
List<Person> getPersonsAlphabetically(boolean isAsc);
7
Chandan Sharma

2つのクエリを作成します。1つはASCを使用し、もう1つはDESCを使用します。

@Query("SELECT * FROM Persons ORDER BY last_name ASC")
List<Person> getPersonsSortByAscLastName();

@Query("SELECT * FROM Persons ORDER BY last_name DESC")
List<Person> getPersonsSortByDescLastName();
2
just