Операции над множествами

Из какого запроса строка?

Чтобы различать строки результата, можно добавить в список выборки SELECT дополнительный столбец с константой. Сделаем это для наших таблиц table1 и table2:

Было:

SELECT *
  FROM table1
#value
11
23
35
SELECT *
  FROM table2
#value
12
23
34
SELECT value
  FROM table1
 UNION
SELECT value
  FROM table2
#value
11
23
35
44
52

Добавим к объединению дополнительный столбец source

SELECT value, 
       'from_table_1' AS source
  FROM table1
 UNION
SELECT value, 
       'from_table_2' AS source
  FROM table2

В результате выполнения запроса получим

#valuesource
11from_table_1
23from_table_1
35from_table_1
42from_table_2
53from_table_2
64from_table_2

Обрати внимание, что строки с value = 3 стало две. Строки стали различаться благодаря столбцу source.

Стоит отметить, что запрос можно было написать короче, не назначая псевдоним второму столбцу выборки из table2:

SELECT value,
       'from_table_1' AS source
  FROM table1
 UNION
SELECT value,
       'from_table_2'
  FROM table2

Так как в первом запросе столбцу назначен псевдоним, то во втором запросе его можно не указывать. Но мы рекомендуем указывать псевдонимы для всех столбцов. В реальных запросах скорее всего появятся дополнительные таблицы, условия соединения и условия отсечения строк, которые отделят списки выборки запросов друг от друга. Псевдоним во втором запросе объяснит назначение константы и упростит восприятие запроса в целом.

ПредыдущаяСледующая