-
[SQLite] 자체 조인 (SELF JOIN)Software/SQLite 2018. 1. 14. 18:05반응형
자체 조인(SELF JOIN)이란 동일한 테이블을 연결해서 조회하는 방법을 말한다. 쉽게 말하면 이전에 설명한 중첩 질의를 자체 조인을 사용해서 작성가능 하다.
예를 들어 cars 테이블에서 "Sonata"라는 name의 price와 같은 값을 가지는 데이터를 조회한다고 한다면 우리는 아래와 같이 먼저 name 값이 "Sonata"인 데이터의 price값을 조회한 후 조회된 price 값과 동일한 가격의 데이터를 조회해야 한다.
sqlite> SELECT brand_id, name, price
...> FROM cars
...> WHERE price in (SELECT price from cars WHERE name = "Sonata");
brand_id|name|price
1|Sonata|1500000
2|K5|1500000
그러나 이러한 중첩질의 대신 아래와 같이 자체 조인을 통해서 동일한 결과값을 조회 할 수도 있다.
sqlite> SELECT A.brand_id, A.name, A.price
...> FROM cars AS A, cars AS B
...> WHERE A.price = B.price
...> AND B.name = "Sonata";
brand_id|name|price
1|Sonata|1500000
2|K5|1500000
FROM 절에 동일 table을 두 번 지정해야 하기 때문에 WHERE 절에 추가되는 조인 조건의 테이블 컬럼 이름을 명확히 구분할 필요가 있다. 그래서 위와 같이 "A", "B"와 같이 별칭을 붙여서 어느 테이블의 컬럼인 지를 구분하도록 해주었다. (사실 이렇게 별칭을 붙이는 것만 빼면 자체 조인은 내부 조인과 동일한 방식)
- 참고로 중첩질의 보다는 조인 연산이 조금 더 빠르다.
반응형'Software > SQLite' 카테고리의 다른 글
[SQLite] 외부 조인 (OUTER JOIN) (0) 2018.01.20 [SQLite] 자연 조인(NATURAL JOIN) (0) 2018.01.20 [SQLite] 내부 조인(Inner Join) (0) 2018.01.13 [SQLite] 중첩 질의 (Nested query) (0) 2017.11.27 [SQLite] 외래키 (Foreign Key) (0) 2017.10.15 댓글