본문 바로가기

SQL

(SQL) union을 활용한 결과물 order by 하기

프래그래머스 SQL 문제를 통해 union으로 2개의 쿼리문이 합쳐진 결과물을 order by하는 방법을 알아보자.

 

문제 설명

FRIENDS 테이블은 게임 내 친구 관계 정보를 담고 있습니다. FRIENDS 테이블 구조는 다음과 같으며 ID1, ID2 쌍은 ID1과 ID2가 서로 친구라는 뜻입니다. 이 테이블에서, 친구 관계는 양방향이며, 친구 관계가 중복으로 등록되는 경우는 없습니다. (id1가 id2의 친구이면 id2는 id1의 친구이고, 레코드 id1, id2가 등록되어 있을 때, 레코드 id2, id1가 등록되는 경우는 없습니다)

 

FRIENDS 테이블 구조

NAME TYPE NULLABLE
ID2 VARCHAR(N) FALSE
ID3 VARCHAR(N) FALSE

문제

FRIENDS 테이블로, solidwillow917 계정의 친구를 찾아내는 SQL 문을 작성해주세요.친구 목록은 닉네임을 사전 순으로 나열해주세요.

예시

예를 들어 FRIENDS 테이블이 다음과 같다면

ID2 ID3
naneekgunpowder1886 treesbeta791
chongqingricochet889 naneekgunpowder1886
adorableblue1813 treesbeta791
solidwillow917 treesbeta791
daysglossy1776 treesbeta791
chongqingricochet889 solidwillow917

solidwillow917의 친구는 treesbeta791와 chongqingricochet889이므로 SQL을 실행하면 다음과 같이 출력되어야 합니다.

 

ID
chongqingricochet889
treesbeta791

 

mine

SELECT ID2 AS ID FROM FRIENDS WHERE ID3 = "solidwillow917" 
UNION SELECT ID3 FROM FRIENDS WHERE ID2 = 'solidwillow917' ORDER BY ID;

 

위의 쿼리문에서  Alias와 ORDER BY ID를 제외하고 입력했을 경우출력 결과는

ID2
chongqingricochet889
treesbeta791

이라고 나왔다.

 

그래서 ID2 부분에 AS ID를 붙여주고 ID의 결과물을 알파벳 순으로 나열하겠끔 ORDER BY ID를 해주었다.