공부/MySQL

[MySQL] 셀프조인

순제로 2024. 4. 12. 23:24
728x90

셀프 조인(self join)은 MySQL에서 매우 유용한 기능으로, 테이블을 자기 자신과 조인하여 데이터를 조회하는 방법입니다. 한 테이블 내에서 관련된 데이터를 비교하거나, 계층적이거나 반복적인 데이터 구조를 쿼리하는 데 특히 유용합니다.

셀프 조인은 사실상 특별한 종류의 조인이 아니라, 동일한 테이블을 두 번 사용하는 일반 조인의 한 형태입니다.

1. 셀프 조인 사용 예

예를 들어, 직원과 그들의 관리자가 동일한 테이블에 저장되어 있는 경우를 생각해 보겠습니다. 이 테이블에는 각 직원의 ID, 이름, 그리고 그들의 관리자의 ID를 나타내는 매니저 ID가 포함되어 있습니다. 여기서 우리의 목표는 각 직원과 그들의 관리자의 이름을 함께 조회하는 것입니다.

2. 예제 테이블 구조

CREATE TABLE Employees (
EmployeeID int,
Name varchar(255),
ManagerID int
);

3. 셀프 조인 쿼리 예

SELECT
E1.Name AS EmployeeName,
E2.Name AS ManagerName
FROM
Employees AS E1
JOIN
Employees AS E2
ON
E1.ManagerID = E2.EmployeeID;

 

이 쿼리에서 `Employees` 테이블은 두 번 참조됩니다: 한 번은 `E1` 별칭으로 직원을 나타내기 위해, 다른 한 번은 `E2` 별칭으로 관리자를 나타내기 위해 참조됩니다. 쿼리의 `ON` 절은 `E1`의 `ManagerID`가 `E2`의 `EmployeeID`와 일치하는 레코드를 찾아 조인합니다. 결과적으로, 이 쿼리는 각 직원과 해당 직원의 관리자 이름을 반환합니다.

4. 셀프 조인의 주의사항

- 셀프 조인을 사용할 때는 테이블에 별칭을 사용하여 같은 테이블의 서로 다른 인스턴스를 구분해야 합니다.
- 조인 조건을 올바르게 설정하는 것이 중요합니다. 잘못된 조인 조건은 예상치 못한 결과나 성능 저하를 초래할 수 있습니다.
- 셀프 조인은 테이블 내의 데이터가 서로 관련되어 있을 때 특히 유용합니다. 하지만, 복잡한 계층 구조나 큰 데이터 세트를 다룰 때는 성능이 문제가 될 수 있으니 주의해야 합니다.

셀프 조인은 SQL을 사용하여 데이터를 다룰 때 매우 유용한 도구 중 하나입니다. 다양한 상황에서 셀프 조인을 활용하여 데이터를 효과적으로 조회하고 분석할 수 있습니다.

 

5. 참고자료

[1] velog - [Mysql] SELF JOIN

https://velog.io/@ifyouseeksoomi/Mysql-SELF-JOIN

 

[Mysql] SELF JOIN

201213 - Mysql self join 문제풀이

velog.io


[2] [한빛미디어] 혼공학습단 - SQL 기본 문법: JOIN(INNER, OUTER, CROSS, SELF JOIN) https://hongong.hanbit.co.kr/sql-%EA%B8%B0%EB%B3%B8-%EB%AC%B8%EB%B2%95-joininner-outer-cross-self-join/

 

SQL 기본 문법: JOIN(INNER, OUTER, CROSS, SELF JOIN)

조인은 두 개의 테이블을 서로 묶어서 하나의 결과를 만들어 내는 것을 말한다. INNER JOIN(내부 조인)은 두 테이블을 조인할 때, 두 테이블에 모두 지정한 열의 데이터가 있어야 한다.OUTER JOIN(외부

hongong.hanbit.co.kr


[3] velog - SQL강의 내용정리 3주차(feat MySQL)

https://velog.io/@kwontae1313/SQL%EA%B0%95%EC%9D%98-%EB%82%B4%EC%9A%A9%EC%A0%95%EB%A6%AC-3%EC%A3%BC%EC%B0%A8feat-MySQL-53ykuq3w

 

SQL강의 내용정리 3주차(feat MySQL)

본 포스팅은 스파르타코딩클럽 SQL강의를 참고하였습니다. 3주차 강의 목표 여러 테이블의 정보를 연결하는 Join을 이해한다. 연결된 정보를 바탕으로 보다 풍부한 데이터분석을 연습한다. 아래

velog.io


[4] 티스토리 - MySQL(mariaDB)로 셀프조인(self join) 구현하기 - siyoon210

https://siyoon210.tistory.com/28

 

MySQL(mariaDB)로 셀프조인(self join) 구현하기

셀프조인 (self join) 일반적으로 JOIN은 연관된 두 개의 테이블을 연결하기 위해서 사용되지만, 자신의 테이블을 참조하는 셀프조인도 가능합니다.예제로 사용될 테이블은 사원의 정보를 담고 있

siyoon210.tistory.com

 

728x90

'공부 > MySQL' 카테고리의 다른 글

[MySQL] WITH  (0) 2024.04.23
[MySQL] UNION ALL과 JOIN  (0) 2024.04.13
[MySQL] 재귀 쿼리  (0) 2024.04.12