[TIL] 사전캠프 10일차 _ SQL 퀘스트 #5

Seoyeon Lee·2025년 9월 19일

Today I Learned ...

🖥️ SQL 문법 연습 퀘스트 #5 & 🙃 오늘의 느낀점

오늘은 SQL 퀘스트를 마무리했다!

어제 달리기반 Lv.4 2개의 문제를 풀면서 멘탈이 나갔었는데,
의외로 오늘 푼 Lv.5 2개의 문제는 훨씬 쉽게 풀 수 있었다.

Lv.4와 비슷한 형식이지만, Join 해야하는 테이블의 개수가 2개에서 3개로 늘어난 것 뿐이었다.
이때, 3개의 테이블을 Join 하기 위해서는

select *
from [테이블이름1] a left/inner join [테이블이름2] b on a.[컬럼이름]=b.[컬럼이름]
				  left/inner join [테이블이름3] c on b.[컬럼이름]=c.[컬럼이름];

형식으로 진행할 수 있다.

오늘 튜터님과 질문하는 시간이 있었는데, 새로운 정보를 알게 되었다.
내가 작성할 때는 selectfromwheregroup byhavingorder by 순서로 작성을 한다.
그런데, 이게 실행될 때는 fromwheregroup byhavingselectorder by 순서로 실행이 된다는 것이다.
그래서 만약 서브쿼리를 작성한다고 하면, 그 서브쿼리가 속해있는 곳 내에서 다시 저 순서대로 실행이 되는 것이다.

select *
from C c
having ... = (
		select ...
		from B b
		where b.Country = c.Country
		)sq
	);

어제 문제를 풀면서 위와 같은 형식의 답을 만났었다.
나는 단순히 서브쿼리가 가장 먼저 실행될 것이라고 생각을 했었다.
그래서 c라는 alias가 어떻게 서브쿼리 안에서 실행될 수 있는 것인지가 궁금했는데,
having 안에 있는 서브쿼리였기 때문에 앞서 from에서 선언된 alias가 작동된 것이다.

이제야 뭔가 SQL을 제대로 이해할 수 있게 된 것 같다.

나중에 필요할 때 바로바로 SQL을 작성해서 사용할 수 있도록 계속 연습해봐야겠다.

profile
백엔드 개발자 지망생

0개의 댓글