如何在 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 |
广告