SQL запросы: мониторинг и профилирование

ВЕРТИКАЛЬНОЕ СОЕДИНЕНИЕ ТАБЛИЦ

Мы рассмотрели горизонтальное соединение таблиц, но их можно соединять и вертикально.

Тут нам не нужно никаких ключей, единственное - это соблюдение 2 условий:

  1. Последовательность и названия должны быть одинаковые для двух таблиц.
  2. Типы данных тоже не должны отличаться.

Давайте сразу рассмотрим пример! У нас есть 3 таблицы, в которых хранятся данные об учениках.

Таблица students_1:

id name grade
1 Александр 11
5 Ксения 11

Таблица students_2:

id name grade
2 Влад 10
3 Сергей 10

Таблица students_3:

student_id name grade
4 Полина 9
6 Алексей 9
1 Александр 11

Объединить вертикально эти три таблицы можно с помощью запроса к каждой таблице и объединения их через оператор UNION ALL:

select
    id,
    name,
    grade
from
    students_1
union all
select
    id,
    name,
    grade
from
    students_2
union all
select
    student_id as id, -- меняем название колонки
    name,
    grade
from
    students_3

Результатом запроса будет:

id name grade
1 Александр 11
5 Ксения 11
2 Влад 10
3 Сергей 10
4 Полина 9
6 Алексей 9
1 Александр 11

Если, вместо UNION ALL, написать просто UNION, дубли удалятся. В так случае мы получим такой результат:

id name grade
1 Александр 11
5 Ксения 11
2 Влад 10
3 Сергей 10
4 Полина 9
6 Алексей 9