如何在 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 |
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP