如何在 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 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告