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 |
极客教程