【问题标题】: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
不确定这是否能解决您的问题,但这应该允许您将两个表组合在一起而不会出错。