두 테이블을 합치는 것을 말한다. 두 테이블의 컬럼은 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처럼 컬럼명 앞에 테이블명을 써줘야 함.
'IT > SQL' 카테고리의 다른 글
| [PostgreSQL] pg_cron 익스텐션 환경설정 (0) | 2025.12.15 |
|---|---|
| [mySQL] 종합적인 쿼리 예제 풀어보기 (JOIN, GROUP BY 등) (5) | 2024.11.06 |
| [SQL] NULL 다루기 (1) | 2024.10.31 |
| [SQL] 시간 비교 - timestampdiff (0) | 2024.04.17 |