在 union all postgres 中选择枚举列
selecting enum columns in union all postgres
我不知道如何设置我的查询。
我想做什么 select 在一个查询中没有关系的两个表。
在研究之后我发现了 union all 但问题是在某些情况下我有类型或状态列是枚举并且我在尝试 select 它们时遇到错误:
ERROR: UNION could not convert type money_transfer_type_enum to invoice_type_enum
我认为在查询中 select 两个完全不同的表不是最佳做法,但出于某些原因我需要它,所以另一个问题是:
如果 union all 不会帮我处理这个,还有别的吗?
提前谢谢
问题似乎是您不能 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
不确定这是否能解决您的问题,但这应该允许您将两个表合并在一起而不会出错。
不确定列的类型是什么,但您可以简单地将两列转换为相同的类型,例如
SELECT money_transfer_type_enum::VARCHAR
FROM table1
UNION ALL
SELECT invoice_type_enum::VARCHAR
FROM table2
Varchar 是解决此类不兼容问题的全部方法,但它会带来一些成本。
您可能想看看将两列都转换为 INTEGER 是否也可以解决问题
我不知道如何设置我的查询。 我想做什么 select 在一个查询中没有关系的两个表。 在研究之后我发现了 union all 但问题是在某些情况下我有类型或状态列是枚举并且我在尝试 select 它们时遇到错误:
ERROR: UNION could not convert type money_transfer_type_enum to invoice_type_enum
我认为在查询中 select 两个完全不同的表不是最佳做法,但出于某些原因我需要它,所以另一个问题是: 如果 union all 不会帮我处理这个,还有别的吗? 提前谢谢
问题似乎是您不能 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
不确定这是否能解决您的问题,但这应该允许您将两个表合并在一起而不会出错。
不确定列的类型是什么,但您可以简单地将两列转换为相同的类型,例如
SELECT money_transfer_type_enum::VARCHAR
FROM table1
UNION ALL
SELECT invoice_type_enum::VARCHAR
FROM table2
Varchar 是解决此类不兼容问题的全部方法,但它会带来一些成本。 您可能想看看将两列都转换为 INTEGER 是否也可以解决问题