【问题标题】:selecting enum columns in union all postgres在联合所有postgres中选择枚举列
【发布时间】:2021-11-19 04:03:03
【问题描述】:

我无法弄清楚如何设置我的查询。 我想在一个查询中选择两个没有关系的表。 经过研究,我发现了 union all,但问题是在某些情况下,我的类型或状态列是枚举,并且在尝试选择它们时出现错误:

ERROR: UNION could not convert type money_transfer_type_enum to invoice_type_enum

我认为在查询中选择两个完全不同的表不是最佳做法,但由于某些原因我需要它,所以另一个问题是: 如果 union all 不能帮助我处理这个问题,还有其他的吗? 提前谢谢

【问题讨论】:

    标签: sql postgresql union typeorm union-all


    【解决方案1】:

    不确定列的类型是什么,但您可以简单地将两列转换为相同的类型,例如

    SELECT money_transfer_type_enum::VARCHAR
    FROM table1
    
    UNION ALL
    
    SELECT invoice_type_enum::VARCHAR
    FROM table2
    

    Varchar 可以解决这种类型的不兼容问题,但它会带来一些成本。 您可能想看看将两列都转换为 INTEGER 是否也可以解决问题

    【讨论】:

      【解决方案2】:

      问题似乎是您不能将两个不同的枚举union 放在一起。您可以做的是将这两个集合合并在一起,但将它们放在不同的列中。

      select money_transfer_type_enum, 
             NULL as invoice_type_enum
      from tblA
      
      union all
      
      select NULL as money_transfer_type_enum,
             invoice_type_enum
      from tblB
      

      不确定这是否能解决您的问题,但这应该允许您将两个表组合在一起而不会出错。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多