본문 바로가기

DATABASE/POSTGRESQL

IN 절 안에 있는 id 값 대로 데이터 정렬하기

보통 쿼리를 실행하면 아래와 같이 ASC로 정렬되어 결과가 조회된다.

//쿼리
SELECT id, name
FROM table
WHERE id IN (1, 3, 2, 4, 5, 7, 6);

//결과
id | name
---+-------
1  | Byeon
2  | John
3  | Jane
4  | Peter
5  | Mary
6  | David
7  | Susan

그래서 하고 싶은 게 뭔데?

WHERE id IN (1, 3, 2, 4, 5, 7 ,6) 아래 IN 절에 기입된 ID 기준으로 정렬을 해서 보고 싶다.

//쿼리
SELECT id, name
FROM table
WHERE id IN (1, 3, 2, 4, 5, 7, 6);
ORDER BY array_position(ARRAY[1, 3, 2, 4, 5, 7, 6], id);

//결과
id | name
---+-------
1  | Byeon
3  | Jane
2  | John
4  | Peter
5  | Mary
7  | Susan
6  | David

array_position(ARRAY[1, 3, 2, 4, 5, 7, 6], id) 를 통해 정렬 값을 IN 절에 기입된 순서로 데이터를 받아 볼 수 있다.

 

끄읏 :)