onion

Объединение в Transact SQL. Метод UNION

В современных БД информация для работы может находится в нескольких таблицах. Это делается для повышения надежности и ускорения работы.

И часто бывают ситуации, когда информацию нужно собирать из нескольких таблиц и объединять в одной таблице.

Для сведения вместе данных из таблиц в SQL применяют несколько методов:

  • UNION: ALL или Distinct — типа сложения таблиц. Прост в использовании, но на практике мало полезен.
  • Подзапросы: с корреляцией и без нее.
  • JOIN: CROSS, INNER, OUTER (LEFT, RIGHT, FULL).
  • Экзотические способы — EXCEPT (разница множеств), INTERSECT (пересечение множеств). Они поддерживаются в Microsoft SQL, но могут не работать в других БД.

UNION — сложение таблиц

Допустим, есть 2 таблицы одинаковые по структуре (равное количество столбцов). И мы просто все строки из этих 2-х таблиц перемещаем в одну большую. Пример:

SELECT title, price FROM titles
UNION
SELECT title, price FROM product

В примере выше: сначала приводим обе таблицы к одинаковому количеству столбцов + чтобы содержимое столбцов совпадало по типу данных в них. Потом объединяем. Далее мы можем работать со всеми данными как с одной таблицей.

Замечание: UNION — это исключающий оператор, т.е. при объединении таблиц он исключает дубликаты записей. Если нам нужно полное объединение без удаления дубликатов, то используем UNION ALL.

При использовании UNION мы получаем некую таблицу, с которой можно делать все, как с обычной table, например применить сортировку.

Складывать UNION можно сколько угодно раз. При этом сложение будет последовательным.

Но в современных базах данных этот метод объединения редко, где сработает.




Добавить комментарий

Ваш e-mail не будет опубликован.