[PostgreSQL] Self join

도톨이·2024년 3월 10일
0

SQL

목록 보기
7/19

Self join 은 두 동일한 테이블의 복사본의 조인으로 보일 수 있다.
테이블은 실제로 카피된 건 아니지만 SQL 이 마치 그런것처럼 명령을 수행하게 된다.

셀프 조인의 특별한 키워드는 없고 간단히 JOIN 문법을 두 부분 모두에서 같은 테이블로 쓰면 된다.
주의할 점은 셀프 조인을 사용하는 경우는 별칭을 사용해야 모호함을 피할 수 있다.

문법을 아래 예시와 같다.

SELECT tableA.col, tableB.col
FROM table AS tableA
JOIN table AS tableB on
tableA.some_col = tableB.other_col

실습해보자.
다음과 같은 film 테이블을 사용할 것이다.

영화 테이블에서 두 세트의 타이틀과 길이가 일치하는 행들을 찾고 싶다.이때 두 테이블의 카피가 필요해진다.
이때 셀프조인을 사용하면 같은 테이블내에서 비교가 가능하다.

film 테이블하나를 f1 으로 지칭하고 inner join 한 film 테이블 다른 하나를 f2 로 지칭하여 서로 다른 film_id 를 가지는 행들 중에(같은 건 제외) 길이가 같은 애들을 같은 테이블로 묶을 수 있다.

SELECT f1.title, f2.title, f1.length
FROM film AS f1
INNER JOIN film AS f2 
ON f1.film_id != f2.film_id
AND f1.length = f2.length

profile
Computer Engineering

0개의 댓글

관련 채용 정보