【问题标题】:Tables being queried with SQL and Sqlalchemy have same column names使用 SQL 和 Sqlalchemy 查询的表具有相同的列名
【发布时间】:2020-08-02 08:21:53
【问题描述】:

我正在使用 sqlalchemy 和 SQL 查询代码查询 mysql 数据库中的各种不同的表。

我现在的问题是重命名一些正在加入的列。查询都进入一个数据框。

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 * 是为了方便起见而效率低下的理想选择。

我正在寻找的输出是一个数据框,其中包含我需要的每一列(然后我试图对其进行过滤并使用 python 构建建模)。我可以通过 sqlalchemy 将查询管理到 pandas 中,别名是现在让我感到悲伤的原因。

提前致谢

【问题讨论】:

    标签: python mysql sql sqlalchemy


    【解决方案1】:

    您可以使用嵌套查询:

    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
    

    【讨论】:

    • 实际上,我使用选择功能的顶部,因为我可以在制作 aias 的同时还使用 * 选择所有。我相信带有括号数据的左连接是破坏它的原因。
    猜你喜欢
    • 1970-01-01
    • 2014-09-27
    • 2013-12-09
    • 1970-01-01
    • 2021-04-11
    • 2013-10-17
    • 1970-01-01
    • 2017-04-23
    • 1970-01-01
    相关资源
    最近更新 更多