Оператор UNION в SQL выбирает строки из двух или более таблиц. Если строки в таблицах повторяются, то они выводятся только один раз (т.е. без дублей). Например:
1 2 3 4 5 |
SELECT age FROM Teachers UNION SELECT age FROM Students; |
Здесь мы извлекаем столбец age из таблиц Teachers и Students, игнорируя повторяющиеся строки.
Нюансы использования оператора UNION
Чтобы использовать оператор UNION
в SQL, следует знать, что:
Количество столбцов во всех таблицах должно быть одинаковым. Например, в примере выше в таблицах Teachers и Students по три столбца.
Типы данных столбцов должны быть одинаковыми. Например, в примере выше столбец age в таблице Teachers является целочисленного типа данных, как и столбец age в таблице Students.
Столбцы должны находится в одинаковом порядке в каждой таблице. Например, в примере выше порядок столбцов в таблице Teachers — id-name-age, как и в таблице Students.
Оператор UNION ALL в SQL
Оператор UNION ALL выбирает строки из двух или более таблиц, подобно работе оператора UNION
. Однако, в отличие от UNION
, оператор UNION ALL
не игнорирует повторяющиеся строки (т.е. выводит дубли).
Давайте попробуем выполнить предыдущую команду SQL, используя UNION ALL
вместо UNION
:
1 2 3 4 5 |
SELECT age FROM Teachers UNION ALL SELECT age FROM Students; |
Здесь мы выбираем строки из обеих таблиц, включая повторяющиеся строки.
UNION против UNION ALL в SQL
Оператор UNION | Оператор UNION ALL |
Возвращает только уникальные строки из таблиц. | Возвращает все строки из таблиц, включая повторяющиеся. |
Выполняется медленнее по сравнению с оператором UNION ALL. | Выполняется быстро, так как нет необходимости фильтровать данные, удаляя повторяющиеся значения. |
Рекомендуется использовать оператор UNION ALL
в случаях, когда вы уверены, что данные уникальны. Таким образом можно повысить производительность.
UNION против JOIN в SQL
Оператор UNION | Оператор JOIN |
Используется для объединения данных из результатов разных запросов в новые строки. | Используется для объединения данных из разных таблиц в новые столбцы. |
Выбирает данные из двух таблиц и объединяет результат. | Использует общий столбец в обеих таблицах для выборки данных. |
Количество столбцов должно быть одинаковым в обеих таблицах. | В таблицах может быть любое количество столбцов. |
Тип данных столбцов должен быть одинаковым. | Тип данных столбцов может быть разным. |