PostgreSQL-将一个表附加到另一个表,并添加一个字段,而不列出所有字段

PostgreSQL-将一个表附加到另一个表,并添加一个字段,而不列出所有字段,postgresql,union,psql,Postgresql,Union,Psql,我有两张桌子: 表a包含字段项目id,等级,以及50个其他字段 table_b带有字段item_id,50个字段与table_a 我需要编写一个SELECT查询,将table_b的行添加到table_a中,但将秩设置为特定值,比如4 目前我有: SELECT * FROM table_a UNION SELECT item_id, 4 rank, field_1, field_2, ... 如何在不写出所有字段和不使用插入查询的情况下将两个表连接在一起 编辑: 我的想法是以某种方式将表_b

我有两张桌子:

  • 表a
    包含字段
    项目id
    等级
    ,以及50个其他字段
  • table_b
    带有字段
    item_id
    ,50个字段与
    table_a
我需要编写一个SELECT查询,将
table_b
的行添加到
table_a
中,但将秩设置为特定值,比如4

目前我有:

SELECT * FROM table_a
UNION
SELECT item_id, 4 rank, field_1, field_2, ...
如何在不写出所有字段和不使用插入查询的情况下将两个表连接在一起

编辑:


我的想法是以某种方式将表_b连接到表_a,使秩字段保持为空,然后简单地替换空秩字段。秩字段从不为空,但项id可以复制,表a中的项id值可能不在表b中,反之亦然。

我不知道您为什么需要它,但您可以使用


我很肯定我拿到了。预定义的
rank
列可以通过连接到自身的子集而插入到
table_b
,只保留要插入的列后面的列

WITH
    _leftcols AS ( SELECT item_id, 4 rank FROM table_b ),
    _combined AS ( SELECT * FROM table_b JOIN _leftcols USING (item_id) )
SELECT * FROM _combined
UNION
SELECT * FROM table_a

你必须写出所有的字段。您可以点击
SELECT*FROM information_schema.columns,其中table_schema='your_schema'和table_name='your_table'
来获取该列表,甚至可以在查询返回的列名末尾连接一个逗号,这样您就可以在客户端中进行复制/粘贴。
WITH
    _leftcols AS ( SELECT item_id, 4 rank FROM table_b ),
    _combined AS ( SELECT * FROM table_b JOIN _leftcols USING (item_id) )
SELECT * FROM _combined
UNION
SELECT * FROM table_a