Computer >> Máy Tính >  >> Lập trình >> Python

Làm thế nào bạn có thể thực hiện tự nối trên hai bảng bằng MySQL trong Python?

Chúng ta có thể nối hai bảng trong SQL dựa trên một cột chung giữa chúng hoặc dựa trên một số điều kiện cụ thể. Có sẵn các loại JOIN khác nhau để nối hai bảng SQL.

Ở đây, chúng ta sẽ thảo luận về sự tham gia của SELF trên hai bảng.

Như tên biểu thị, phép nối SELF là phép nối với chính bảng. Phép nối này được thực hiện giữa hai bản sao của cùng một bảng. Các hàng của bảng được so khớp với các hàng khác của cùng một bảng dựa trên một số điều kiện.

Cú pháp

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

a và b là hai bí danh của cùng một bảng.

table_name là tên của bảng mà tự tham gia sẽ được thực hiện. Tên bảng giống nhau được sử dụng ở cả hai nơi vì chúng tôi đang thực hiện tự kết hợp.

Để có một bảng có tên “Học sinh” là những người theo sau -

Học sinh

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

Chúng ta sẽ thực hiện tự nối trên bảng trên dựa trên điều kiện a.Dept_id

Các bước để thực hiện tự nối trên hai bảng bằng MySQL trong python

  • nhập trình kết nối MySQL

  • thiết lập kết nối với trình kết nối bằng connect ()

  • tạo đối tượng con trỏ bằng phương thức cursor ()

  • tạo một truy vấn bằng cách sử dụng các câu lệnh mysql thích hợp

  • thực hiện truy vấn SQL bằng phương thức execute ()

  • đóng kết nối

Ví dụ

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()

Đầu ra

Dept_id
Tên_ sinh viên
120
Rohit
120
Kirat
120
Dấu đầu dòng
121
Dấu đầu dòng
121
Dấu đầu dòng