SELECT DISTINCT, ORDER BY expressions must appear in select list
금일 sql 를 만지다가 마주한 문제이다. 전에도 겪었던 문제고 해결하는데 시간이 들진 않았지만 혹시 몰라 메모해둔다.
SELECT DISTINCT, ORDER BY expressions must appear in select list
간단하다. distinct
하여 출력한 필드 중에 order by
하려는 필드가 없다고 생각하면 된다.
order by
절은 distinct
가 적용된 후에 적용됨으로 해당하는 오류가 발생한다고 보면 될 것 같다.
결론: distinct 한 필드 안에 있는 필드로 order by 를 해야한다.
jsonb
예전에도 한 번 적었던 거 같기는 하지만 다시금 작성한다. jsonb
가 Array
형태 안에 있거나 할 때는 아래처럼 접근이 가능하다.
-- 오른쪽과 같은 형태라면 [{a: 2, b: 4}, {c: 9}]
select
(jsonb_array_col -> 1) ->> 'c'
from tmp_table
-- '9' 가 출력
->
를 통해 인덱스로 접근하여 jsonb
형태로 꺼내고 원하는 속성 값을 문자열로 꺼낸다.
이 방법만 있는 것은 아니고 더 많은 방법은 아래 문서를 참조하면 좋을 것 같다.