两个表的SQL连接,在Python上具有相同的列名

2024-05-21 02:12:44 发布

您现在位置:Python中文网/ 问答频道 /正文

已经有几个问题有相同的问题,我已经看过了,但仍然没有找到解决办法。 我想从两个表中合并和计数,列具有相同的名称(设备号)。在

栏目名称:活动与性别

import pandas as pd
from sqlalchemy import create_engine # database connection

db_engine = create_engine('sqlite:///devices-train.db')

join_devices = pd.read_sql_query('SELECT device_id, count(device_id), gender_age_train.device_id, count(gender_age_train.device_id) FROM events JOIN gender_age_train on events.device_id = gender_age_train.device_id GROUP BY device_id', db_engine)

print join_devices

python的输出是:

^{pr2}$

Tags: import名称iddbagedevicecountcreate
2条回答

当用于连接的列具有相同的名称时,可以使用USING clause。这不仅可以节省键入,还可以从联接输出中删除重复列,以便您更容易地引用它:

SELECT   device_id, COUNT(*)
FROM     events
JOIN     gender_age_train USING (device_id)
GROUP BY device_id;

您需要完全限定device_id列,因为正如您所指出的,它出现在两个表中。值得注意的是,选择events.device_id和{}是没有意义的,因为它们是相等的(根据join条件)。选择其中一个就足够了:

SELECT   e.device_id, COUNT(*)
FROM     events e
JOIN     gender_age_train g on e.device_id = g.device_id 
GROUP BY e.device_id

相关问题 更多 >