python—使用sql和sqlalchemy查询的表具有相同的列名

jrcvhitl  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(378)

我正在用sqlalchemy和sql查询代码查询mysql数据库中的各种不同的表。
我现在的问题是重命名一些正在连接的列。所有查询都进入一个Dataframe。

SELECT *
FROM original

LEFT JOIN table1 
    on original.id = table1.t1key

LEFT JOIN table2 
    on original.id = table2.t2key

LEFT JOIN table3
    on original.id = table3.t3key;

实际上,我只想从这些表中得到添加到查询中的一列。每个表都有一个同名的列。我使用别名的方法如下:,

table1.columnchange AS 'table1columnchange'
table2.columnchange AS 'table2columnchange'
table3.columnchange AS 'table3columnchange'

但我尝试过的各种方法最终都会导致恼人的错误。
我还查询了大约20个不同的表,所以使用 SELECT * 一开始虽然效率不高,但为了方便起见还是很理想的。
我要寻找的输出是一个Dataframe,其中包含我需要的每一列(然后我尝试用python为其过滤和构建建模)。我可以通过sqlalchemy将查询管理到pandas中,这个别名现在让我很难过。
提前谢谢

gdrx4gfi

gdrx4gfi1#

可以使用嵌套查询:

SELECT
 original.column1 as somename,
 table1.column1 as somename1,
 table2.column1 as somename2
FROM
 (SELECT
    column1
 FROM
    original
 ) original
 LEFT JOIN (
    SELECT 
        column1
    FROM
        table1
 ) table1 ON original.id = table1.t1key
 LEFT JOIN (
    SELECT 
        column1
    FROM
        table2
 ) table2 ON original.id = table2.t2key

相关问题