使用postgres中的union从Union两个表创建一个新表

时间:2017-06-15 20:31:58

标签: postgresql union create-table

我想创建一个新表,作为两个表没有重复的表的结合。我在stackoverflow中搜索了一下,我发现了一个问题,正是我想要的但是使用mysql Create a new table from merging two tables with union

mysql中的解决方案

CREATE TABLE new_table
  SELECT * FROM table1
    UNION
  SELECT * FROM table2;

我尝试做类似的事情,但我得到了:

  

SQL错误。

如果可以使用类似于mysql的语句,我想实现这个目的。

我知道如果你先用我想要的字段创建一个新表。我可以通过这个表的并集来选择这个表。如果没有其他选择,我必须做这样的事情。

但总结如果可以做一些类似于postgres中mysql的问题。我想使用语法糖来做到这一点

提前致谢

更新

为了澄清我有两个结构相同的表

TABLE1(id,field1,field2,field3)
TABLE2(id,field1,field2,field3)

和我想要的表

TABLE3(id,field1,field2,field3)

请注意我尝试了

CREATE TABLE new_table as
  SELECT * FROM table1
    UNION
  SELECT * FROM table2;

并且它有效,但没有将字段放在正确的位置,例如将表1的field3放在table_result的字段1中

1 个答案:

答案 0 :(得分:2)

您错过了AS关键字:

CREATE TABLE new_table
AS
  SELECT * FROM table1
    UNION
  SELECT * FROM table2;

如果您需要特定顺序的列,请在选择中指定它们:

CREATE TABLE new_table
AS
SELECT id, column1, column2, column3
FROM table1
UNION
SELECT id, column1, column2, column3
FROM table2;

手册中的更多细节:
https://www.postgresql.org/docs/current/static/sql-createtableas.html