Python 如何在Python中使用MySQL执行两个表之间的自连接?

Python 如何在Python中使用MySQL执行两个表之间的自连接?

我们可以基于它们之间的共同列或基于某个指定条件,在SQL中连接两个表。连接两个SQL表有不同类型的JOIN可用。

在这里,我们将讨论两个表之间的自连接。

正如名称所示,自连接是与表本身进行的连接。该连接是在同一表的两个副本之间执行的。表的行基于某个条件与同一表的其他行匹配。

阅读更多:Python 教程

语法

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小于该特定行的行匹配。

使用MySQL在Python中执行自连接的步骤

  • 导入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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程