본문 바로가기
IT/SQL

[SQL] JOIN 문법

by 저당단 2024. 10. 2.

두 테이블을 합치는 것을 말한다. 두 테이블의 컬럼은 JOIN의 방법과 상관없이 모두 같은 방식으로 합쳐지지만 어떤 로우를 살릴지는 JOIN의 방법에 따라 다르다.

 

종류 : INNER JOIN(default), LEFT/RIGHT/FULL OUTER JOIN

 

select * from 테이블1 join 테이블2 on 조건

 

ON 뒤에 붙는 조건이 테이블1의 id = 테이블2의 id 라고 한다면 INNER JOIN은 테이블1, 2에 모두 포함된 id를 가지고 있는 로우만 살린다.

LEFT OUTER JOIN은 테이블1의 로우를 모두 살린다.

 

(CROSS JOIN은 논외이다. ON 뒤의 조건에 따라 합치는 게 아니기 때문이다. 두 테이블 간에 공통으로 할만한 컬럼이 없을 때 사용함.)

 

 

예시)

프로그래머스 Lv.3 '있었는데요 없었습니다' 정답

SELECT i.ANIMAL_ID, i.NAME 
FROM ANIMAL_INS AS i JOIN ANIMAL_OUTS AS o ON i.ANIMAL_ID = o.ANIMAL_ID
WHERE i.DATETIME > o.DATETIME ORDER BY i.DATETIME

 

 

Column: '컬럼명' in where clause is ambiguous

두 테이블을 join했을 때 이름이 같은 컬럼이 있다는 에러. 위 예시의 i.ANIMAL_ID처럼 컬럼명 앞에 테이블명을 써줘야 함.