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

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

Было:

SELECT *
  FROM table1
# value
1 1
2 3
3 5
SELECT *
  FROM table2
# value
1 2
2 3
3 4
SELECT value
  FROM table1
 UNION
SELECT value
  FROM table2
# value
1 1
2 3
3 5
4 4
5 2

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

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

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

# value source
1 1 from_table_1
2 3 from_table_1
3 5 from_table_1
4 2 from_table_2
5 3 from_table_2
6 4 from_table_2

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

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

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

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

5.1 Доступные операции над множествами

5.3 Пересечение строк