Postgresql:如何逐行连接?

Tg.*_*Tg. 0 sql postgresql union view

假设我有两张桌子.

FIRST_TAB
ID  NAME
===========
1   a
2   b
Run Code Online (Sandbox Code Playgroud)

SECOND_TAB
ID  NAME
===========
3   c
4   d
Run Code Online (Sandbox Code Playgroud)

有没有办法制作视图/新表,以便我可以这样做一个查询?(我的真实数据有大约23个表,没有重复,所有这些都有相同的列).

SELECT * FROM NEWVIEW;
ID NAME  OPTIONAL
==================
1  a     FIRST_TAB
2  b     FIRST_TAB
3  c     SECOND_TAB
4  d     SECOND_TAB
Run Code Online (Sandbox Code Playgroud)

OMG*_*ies 5

使用:

CREATE OR REPLACE VIEW newview AS
  SELECT a.id,
         a.name,
         'FIRST_TAB' AS optional
    FROM FIRST_TAB a
  UNION ALL
  SELECT b.id,
         b.name,
         'SECOND_TAB' AS optional
    FROM FIRST_TAB b
Run Code Online (Sandbox Code Playgroud)

可选列是一个静态字符串,您可以在其中指定所需内容,假设没有特殊字符.

UNION ALL比使用更快UNION,因为它不会删除重复项.如果你需要删除重复项,只需删除"ALL"关键字(我相信optional列值将取自最早出现重复项的联合语句).

参考: