[Android] Room DB 조건부 정렬 : CASE WHEN 구문

2

Android

목록 보기
14/16

로컬 DB로 저장한 내용을 앱의 상태에 맞는 카테고리로 정렬되도록 하려면 CASE WHEN ~ THEN ~ 구문을 사용하면 됩니다.

저 같은 경우는 카테고리 코드, 정렬 코드를 사용해서 카테고리 코드에 따른 오름차순, 내림차순 정렬을 하도록 다음과 같이 쿼리를 구성했습니다.

@Query("""
        SELECT * FROM product ORDER BY
            CASE WHEN :categoryCode = 0 AND :orderCode = 0 THEN time END ASC,
            CASE WHEN :categoryCode = 1 AND :orderCode = 0 THEN rate END ASC,
            CASE WHEN :categoryCode = 0 AND :orderCode = 1 THEN time END DESC,
            CASE WHEN :categoryCode = 1 AND :orderCode = 1 THEN rate END DESC
    """)
fun getSavedHotelList(categoryCode: Int, orderCode: Int): Flow<List<Product>>

0개의 댓글