Статья Автор: Деникина Н.В., Деникин А.В.

Объединение таблиц с UNION и UNION ALL

Объединение таблиц с UNION и UNION ALL

UNION

Команда UNION используется для объединения результатов двух или более запросов.

  • Дублирующиеся строки удаляются автоматически.
  • Объединяемые запросы должны возвращать одинаковое количество столбцов с совместимыми типами данных.

Синтаксис:

SELECT column1, column2 FROM table1 
UNION 
SELECT column1, column2 FROM table2; 

UNION ALL

Команда UNION ALL также объединяет результаты двух или более запросов, но сохраняет дубликаты строк.

Синтаксис:

SELECT column1, column2 FROM table1 
UNION ALL 
SELECT column1, column2 FROM table2; 


Пример: UNION

Таблица students_2023:

student_id | name
------------------
1          | Alice
2          | Bob 

Таблица students_2024:

student_id | name
------------------
2          | Bob
3          | Charlie

Запрос:

SELECT student_id, name FROM students_2023 
UNION 
SELECT student_id, name FROM students_2024; 

Результат:

student_id | name
------------------
1          | Alice
2          | Bob
3          | Charlie

Пример: UNION ALL

Используем те же таблицы, но запрос с UNION ALL:

SELECT student_id, name FROM students_2023 
UNION ALL 
SELECT student_id, name FROM students_2024; 

Результат:

student_id | name
------------------
1          | Alice
2          | Bob
2          | Bob
3          | Charlie

Сравнение UNION и UNION ALL

Характеристика UNION UNION ALL
Дубликаты Удаляются Сохраняются
Скорость выполнения Медленнее Быстрее
Использование памяти Требует больше памяти Использует меньше памяти

Когда использовать UNION и UNION ALL

  • UNION: когда важна уникальность строк в объединённом результате.
  • UNION ALL: когда нужно сохранить дубликаты или требуется более высокая производительность.

3. Совмещение CROSS JOIN и UNION

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

SELECT product_name, store_name 
FROM products 
CROSS JOIN stores 
UNION 
SELECT 'Default Product', 'Default Store'; 

Результат:

product_name     | store_name
------------------------------
Laptop           | Store A
Laptop           | Store B
Phone            | Store A
Phone            | Store B
Default Product  | Default Store

Вывод

  • CROSS JOIN подходит для полного картезианского произведения.
  • UNION объединяет уникальные строки из нескольких запросов.
  • UNION ALL объединяет строки, сохраняя дубликаты.
  • SQLite позволяет гибко использовать эти инструменты для анализа и манипуляции данными.
Пропустить Навигационные Ссылки.
Чтобы оставить комментарий нужна авторизация
Печать