[프로그래머스/MySQL] 조건에 맞는 개발자 찾기(개념 및 정답)

DISTINCT, JOIN 종류
Seo Jimin's avatar
Mar 17, 2026
[프로그래머스/MySQL] 조건에 맞는 개발자 찾기(개념 및 정답)

문제 링크

개념

DISTINCT

조회할 때 중복을 제거 하고 싶을 때 사용하면 된다.
SELECT DISTINCT col1, col2, ... FROM table;

JOIN 종류

JOIN의 종류는 여러가지가 있는데 상황에 따라 적합한 JOIN의 종류가 다르기 때문에 다 알아두는 것이 좋다.

(INNER) JOIN

두 테이블의 교집합, ON절의 조건이 일치하는 결과를 출력한다.
# 아래의 두 쿼리문은 같은 결과값을 출력한다. # 1 SELECT * FROM table1 t1 INNER JOIN table2 t2 ON t1.id = t2.id; # 2 SELECT * FROM table1 t1, table2 t2;

LEFT/RIGHT OUTER JOIN

특정 테이블을 기준으로 조합하는 JOIN이다.
예시를 하나 들자면 게시물에 달린 댓글을 조회할 때도 이를 사용한다. 댓글이 달린 게시물도 있고 댓글이 하나도 안 달린 게시물도 있기 때문에 기준을 게시물 테이블로 하여 댓글 테이블을 LEFT/RIGHT OUTER JOIN 해야 한다.
# LEFT, RIGHT 어떤걸 사용하던 기준만 똑같다면 같은 결과 집합이 나온다. # 컬럼 순서는 달라지지만 내용은 같다. # 1 SELECT * FROM board b LEFT JOIN reply r ON b.id = r.boardId; # 2 SELECT * FROM reply r RIGHT JOIN board b ON b.id = r.boardId;

UNION

두 테이블의 합집합, 여러 SELECT문의 결과를 하나의 결과 집합으로 표현할 때 사용한다.
⚠️
각각의 SELECT문으로 선택된 필드의 개수와 타입, 순서가 모두 같아야 한다.
→ 컬럼 위치를 기준으로 하여 합쳐지기 때문이다.
SELECT id, name FROM students UNION SELECT id, name FROM teachers;
💡
기본으로 DISTINCT가 적용되어 있다.

UNION ALL

UNION에서 중복되는 행까지 모두 출력하고 싶다면(=UNION에서 DISTINCT를 제거하고 싶다면) ALL을 붙이면 된다.
💡
UNION / UNION ALL 실행순서
  1. SELECT 1 실행
  1. SELECT 2 실행
  1. 결과 합치기
  1. UNION일 경우 DISTINCT 수행

SELF JOIN

같은 테이블을 두 번 사용할 때 사용한다.
# EX1 SELECT * FROM employees e JOIN employees m # EX2 SELECT * FROM employees e LEFT JOIN employees m

제출 답안

SELECT DISTINCT D.ID, D.EMAIL, D.FIRST_NAME, D.LAST_NAME FROM DEVELOPERS D JOIN SKILLCODES S ON (D.SKILL_CODE & S.CODE) = S.CODE WHERE S.NAME IN ('Python', 'C#') ORDER BY D.ID;
 
 
참고 자료
 
Share article

miniiya