Postgresql: Как объединить таблицу за строкой? - PullRequest
0 голосов
/ 24 ноября 2010

Допустим, у меня есть два стола.

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

1 Ответ

5 голосов
/ 24 ноября 2010

Использование:

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 будет взято из самого раннего из объединенных операторов, где появляются дубликаты).

Справка:

...