Объединение таблиц с 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 позволяет гибко использовать эти инструменты для анализа и манипуляции данными.