파이썬 MySQL 조인
두 개 이상의 테이블 조인
JOIN 문을 사용하여 둘 이상의 테이블 간의 관련 열을 기반으로 행을 결합할 수 있습니다.
"users" 테이블과 "products" 테이블이 있다고 가정합니다.
사용자
{ id: 1, name: 'John', fav: 154},
{ id:
2, name: 'Peter', fav: 154},
{ id: 3, name: 'Amy', fav: 155},
{ id: 4, name: 'Hannah', fav:},
{ id: 5, name: 'Michael', fav:}
제품
{ id: 154, name:
'Chocolate Heaven' },
{ id: 155, name: 'Tasty Lemons' },
{
id: 156, name: 'Vanilla Dreams' }
이 두 테이블은 사용자 fav
필드와 제품 필드
를 사용하여 결합할 수 있습니다 id
.
예시
사용자 및 제품에 가입하여 사용자가 좋아하는 제품의 이름을 확인하십시오.
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase"
)
mycursor = mydb.cursor()
sql = "SELECT \
users.name AS user,
\
products.name AS favorite \
FROM users \
INNER JOIN
products ON users.fav = products.id"
mycursor.execute(sql)
myresult = mycursor.fetchall()
for x in myresult:
print(x)
참고: INNER JOIN 대신 JOIN을 사용할 수 있습니다. 둘 다 같은 결과를 줄 것입니다.
왼쪽 조인
위의 예에서 Hannah와 Michael은 결과에서 제외되었는데, 이는 INNER JOIN이 일치하는 레코드만 표시하기 때문입니다.
선호하는 제품이 없더라도 모든 사용자에게 표시하려면 LEFT JOIN 문을 사용합니다.
예시
모든 사용자와 좋아하는 제품 선택:
sql = "SELECT \
users.name AS user,
\
products.name AS favorite \
FROM users \
LEFT JOIN
products ON users.fav = products.id"
오른쪽 조인
모든 제품과 해당 제품을 즐겨찾기로 갖고 있는 사용자를 반환하려면 사용자가 즐겨찾기로 갖고 있지 않더라도 RIGHT JOIN 문을 사용합니다.
예시
모든 제품을 선택하고 해당 제품을 즐겨찾는 사용자:
sql = "SELECT \
users.name AS user,
\
products.name AS favorite \
FROM users \
RIGHT JOIN
products ON users.fav = products.id"
참고: 선호하는 상품이 없는 Hannah와 Michael은 결과에 포함되지 않습니다.