如何在 PostgreSQL 中将 union tables 插入到 table?

How can I insert union tables to table in PostgreSQL?

我有这个查询并将行插入到 MYSQl 数据库并且工作完美。

insert int test(id,user)
select null,user from table2
union 
select null,user from table3

但是当 运行 时,以上查询在 PostgreSQL 中不起作用。我收到此错误 column "id" is of type integer but expression is of type text,但是当我 运行 下面显示的两个查询有效时。

当我在 PostgreSQL 中 运行 下面查询时,它工作正常:

insert into test(id,user)
select null,user from table2

或在 PostgreSQL 中以下查询正常工作:

insert int test(id,user)
select null,user from table3

或在 PostgreSQL 中以下查询正常工作:

select null,user from table2
union 
select null,user from table3

null 不是实际值,因此没有数据类型。默认的 assumed 数据类型是 text,这就是错误消息的来源。只需在第一个 SELECT:

中将值转换为 int
insert into test(id, "user")
select null::int, "user" from table2
union 
select null, "user" from table3

或者更好的是,完全省略 id,以便使用为 id 列定义的任何默认值。尝试将 null 插入名为 id

的列中听起来很奇怪
insert into test("user")
select "user" from table2
union 
select "user" from table3

请注意,user 是保留关键字和内置函数,因此您必须将其引用以避免出现问题。在长 运行 中,我建议为该列找到一个不同的名称。