如何在 Python 中使用 MySQL 對兩個表執行自連線?


我們可以根據兩個表之間的公共列或某些指定條件在 SQL 中連線兩個表。有不同型別的 JOIN 可用於連線兩個 SQL 表。

這裡,我們將討論兩個表上的自連線。

顧名思義,自連線是指與表本身的連線。此連線在同一表的兩個副本之間執行。表的行根據某些條件與同一表中的其他行匹配。

語法

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

a 和 b 是同一表的兩個別名。

table_name 是要執行自連線的表的名稱。由於我們正在執行自連線,因此在兩個地方都使用相同的表名。

假設有一個名為“Students”的表,如下所示:

學生

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

我們將根據條件 a.Dept_id<b.Dept_id 對上述表執行自連線。這意味著表中的每一行都將與表中其他 Dept_id 小於該特定行的行匹配。

在 Python 中使用 MySQL 對兩個表執行自連線的步驟

  • 匯入 MySQL 聯結器

  • 使用 connect() 建立與聯結器的連線

  • 使用 cursor() 方法建立遊標物件

  • 使用適當的 mysql 語句建立查詢

  • 使用 execute() 方法執行 SQL 查詢

  • 關閉連線

示例

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


更新於: 2021-06-10

251 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.