Categories
개발(Development)

[SQL] Select 결과를 ids 순으로 정렬하기

SELECT * FROM tbl
WHERE id IN ( 5, 10, 1, 9)

위와 같은 SQL문은 특정 아이디에 해당 되는 값들을 추출할 때 자주 사용하는 구문이다. 하지만 보통 위와 같은 쿼리를 수행시킬 경우, 결과값이 1, 5, 9, 10 처럼 id를 기준으로 정렬되게 된다.
아래는 이를 피하고 IN 안에 넣은 순서대로 데이터를 추출하고 싶을 때 사용할 수 있는 방법이다.(아래 문법은 MySQL에서 사용한 문법이다)

SELECT * FROM tbl
WHERE id IN (5, 10, 1, 9)
ORDER BY INSTR( ‘5,10,1,9’,  id)

허무할 정도로 별 거 없다. IN 안에 넣은 ids 문자열에서 id가 위치하는 index 값을 추출(INSTR 함수)하여 그것을 기준으로 정렬하는 방법이다.
출처: SELECT In order by specific Ids – Microsoft SQL Server에 달린 댓글 중에서
다른 좋은 방법을 알고 있는 분이 있다면 공유 주시길… 🙂