Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python과 MySQL로 셀프 조인(SELF JOIN) 수행하는 방법 완벽 정리

SQL에서는 두 개의 테이블을 공통 컬럼 또는 지정된 조건을 기준으로 결합할 수 있으며, 목적에 따라 다양한 종류의 JOIN이 제공됩니다.

이 글에서는 그중에서도 셀프 조인(SELF JOIN)에 대해 자세히 알아보겠습니다.

셀프 조인은 이름 그대로 테이블 자기 자신과 수행하는 조인입니다. 동일한 테이블의 두 복사본 사이에서 이루어지며, 특정 조건에 따라 한 테이블의 행이 같은 테이블의 다른 행들과 매칭됩니다.

셀프 조인 기본 문법

SELECT a.column1 , b.column2
FROM table_name a, table_name b
WHERE condition;

여기서 ab는 동일한 테이블에 붙인 두 개의 별칭(alias)입니다. 셀프 조인은 같은 테이블을 대상으로 수행하기 때문에 FROM 절에 동일한 테이블 이름이 두 번 사용됩니다.

예제 테이블 소개

설명을 위해 다음과 같은 'Students' 테이블이 있다고 가정해 보겠습니다.

Students

+----------+--------------+-----------+
| id | Student_name | Dept_id |
+----------+--------------+-----------+| 2 | Rohit | 121 |
| 3 | Kirat | 121 |
| 4 | Inder | 123 |
+----------+--------------+-----------+

위 테이블에 a.Dept_id < b.Dept_id라는 조건으로 셀프 조인을 수행해 보겠습니다. 즉, 각 행이 자신보다 Dept_id 값이 큰 다른 행들과 매칭되는 방식입니다.

Python에서 MySQL로 셀프 조인을 수행하는 단계

  • MySQL 커넥터(mysql.connector) 모듈을 임포트합니다.

  • connect() 메서드를 사용하여 데이터베이스와 연결을 설정합니다.

  • cursor() 메서드로 커서 객체를 생성합니다.

  • 적절한 SQL 문법으로 쿼리를 작성합니다.

  • execute() 메서드를 사용하여 SQL 쿼리를 실행합니다.

  • 작업이 끝나면 연결을 종료(close)합니다.

전체 예제 코드

import mysql.connector
db=mysql.connector.connect(host="your host", user="your username", password="your password", database="database_name")

cursor=db.cursor()
query="SELECT a.Dept_id,b.Student_name FROM Students a, Students b WHERE a.Dept_id<b.Dept_id"
cursor.execute(query)
rows=cursor.fetchall()
for x in rows:
print(x)

db.close()

실행 결과

Dept_id
Student_name
120
Rohit
120
Kirat
120
Inder
121
Inder
121
Inder


위 결과를 보면 Dept_id가 작은 행이 Dept_id가 더 큰 학생 이름과 짝을 이루어 출력된 것을 확인할 수 있습니다. 이처럼 셀프 조인은 조직도에서 상사-부하 관계를 찾거나, 같은 부서에 속한 사람들을 비교하는 등 하나의 테이블 내에서 행 간 관계를 분석할 때 유용하게 활용됩니다.