【问题标题】:Postgresql: How to concat table by row?Postgresql:如何逐行连接表?
【发布时间】:2010-11-24 05:44:05
【问题描述】:

假设我有两张桌子。

FIRST_TAB
ID  NAME
===========
1   a
2   b

SECOND_TAB
ID  NAME
===========
3   c
4   d

有没有办法制作视图/新表,以便我可以进行这样的查询? (我的真实数据有大约 23 个表,没有重复,它们都有相同的列)。

SELECT * FROM NEWVIEW;
ID NAME  OPTIONAL
==================
1  a     FIRST_TAB
2  b     FIRST_TAB
3  c     SECOND_TAB
4  d     SECOND_TAB

【问题讨论】:

    标签: sql postgresql view union


    【解决方案1】:

    用途:

    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
    

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

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

    参考:

    【讨论】:

    • 啊,谢谢,我浏览了一下,但不知何故错过了它。通配符在这里可用吗?我有很多专栏。
    • @Tg:可以,但不建议这样做,因为 UNION 语句需要匹配结果集中每个序数位置的数据类型。 IE:id 是 INT,每个后续 UNION 查询的第一列必须是 INT。如果列顺序每次都发生变化,那你就有麻烦了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-09
    • 1970-01-01
    • 2021-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多