Оператор UNION
Ми привернули увагу клієнта, якому потрібні SQL-запити. Перш ніж перейти до JOINs
, розглянемо оператор UNION
, який є важливим для об'єднання кількох таблиць.
Ось кілька важливих аспектів використання UNION
:
-
Кількість і порядок стовпців: Усі запити, що об'єднуються за допомогою
UNION
, повинні мати однакову кількість стовпців у такому ж порядку; -
Типи даних: Стовпці в кожному запиті повинні мати сумісні типи даних;
-
Унікальні рядки: За замовчуванням
UNION
видаляє дублікати рядків. ВикористовуйтеUNION ALL
, якщо потрібно зберегти дублікати.
Для кращого розуміння як правильно об'єднувати таблиці за допомогою оператора UNION
, я додав додаткову таблицю, що містить інформацію про contractors
.
Тут небагато даних: лише first_name
, last_name
та email
.
Ви можете помітити, що ця таблиця має схожість із таблицею employees
. Використовуючи оператор UNION
, ми можемо об'єднати ці дві таблиці, щоб, наприклад, переглянути список усіх імен та прізвищ співробітників і підрядників, залучених до компанії.
Для цього скористаємося оператором UNION
:
12345678(SELECT employee_id as id, first_name, last_name FROM employees) UNION (SELECT contractor_id as id, first_name, last_name FROM contractors) ORDER BY id
Розглянемо детальніше, що відбувається:
Маємо два запити, кожен з яких повертає три стовпці з однаковими типами даних. Ми хочемо побачити Id
, first_name
та last_name
усіх у компанії. Також ми перейменували стовпець Id
, щоб обидва запити мали однакові назви стовпців.
Далі використовуємо UNION
, щоб об'єднати результати цих запитів, видаляючи дублікати (хоча у цьому випадку їх немає).
Нарешті, сортуємо результати за Id
за допомогою ORDER BY
.
Note
Ми сортуємо за
Id
, який є спільним стовпцем для обох таблиць.
Після використання UNION
отримуємо "один великий запит", який можна додатково обробляти за допомогою таких операторів, як ORDER BY
.
Ми не можемо безпосередньо використовувати WHERE
або GROUP BY
з таблицями, об'єднаними за допомогою UNION
. Щоб застосувати ці оператори, потрібно використати підзапит у секції FROM
. Ось приклад, як це зробити:
123456789SELECT id, first_name, last_name FROM ( SELECT employee_id AS id, first_name, last_name FROM employees UNION SELECT contractor_id AS id, first_name, last_name FROM contractors ) AS combined WHERE first_name = 'Jane'
Використання підзапиту у секції FROM
надає більше гнучкості! Спочатку це може здатися складним, але опанування цього підходу значно полегшить написання складних запитів.
1. Які стовпці є обов'язковими при використанні оператора UNION
у SQL?
2. Як оператор UNION
за замовчуванням обробляє дублікати рядків?
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Awesome!
Completion rate improved to 4
Оператор UNION
Свайпніть щоб показати меню
Ми привернули увагу клієнта, якому потрібні SQL-запити. Перш ніж перейти до JOINs
, розглянемо оператор UNION
, який є важливим для об'єднання кількох таблиць.
Ось кілька важливих аспектів використання UNION
:
-
Кількість і порядок стовпців: Усі запити, що об'єднуються за допомогою
UNION
, повинні мати однакову кількість стовпців у такому ж порядку; -
Типи даних: Стовпці в кожному запиті повинні мати сумісні типи даних;
-
Унікальні рядки: За замовчуванням
UNION
видаляє дублікати рядків. ВикористовуйтеUNION ALL
, якщо потрібно зберегти дублікати.
Для кращого розуміння як правильно об'єднувати таблиці за допомогою оператора UNION
, я додав додаткову таблицю, що містить інформацію про contractors
.
Тут небагато даних: лише first_name
, last_name
та email
.
Ви можете помітити, що ця таблиця має схожість із таблицею employees
. Використовуючи оператор UNION
, ми можемо об'єднати ці дві таблиці, щоб, наприклад, переглянути список усіх імен та прізвищ співробітників і підрядників, залучених до компанії.
Для цього скористаємося оператором UNION
:
12345678(SELECT employee_id as id, first_name, last_name FROM employees) UNION (SELECT contractor_id as id, first_name, last_name FROM contractors) ORDER BY id
Розглянемо детальніше, що відбувається:
Маємо два запити, кожен з яких повертає три стовпці з однаковими типами даних. Ми хочемо побачити Id
, first_name
та last_name
усіх у компанії. Також ми перейменували стовпець Id
, щоб обидва запити мали однакові назви стовпців.
Далі використовуємо UNION
, щоб об'єднати результати цих запитів, видаляючи дублікати (хоча у цьому випадку їх немає).
Нарешті, сортуємо результати за Id
за допомогою ORDER BY
.
Note
Ми сортуємо за
Id
, який є спільним стовпцем для обох таблиць.
Після використання UNION
отримуємо "один великий запит", який можна додатково обробляти за допомогою таких операторів, як ORDER BY
.
Ми не можемо безпосередньо використовувати WHERE
або GROUP BY
з таблицями, об'єднаними за допомогою UNION
. Щоб застосувати ці оператори, потрібно використати підзапит у секції FROM
. Ось приклад, як це зробити:
123456789SELECT id, first_name, last_name FROM ( SELECT employee_id AS id, first_name, last_name FROM employees UNION SELECT contractor_id AS id, first_name, last_name FROM contractors ) AS combined WHERE first_name = 'Jane'
Використання підзапиту у секції FROM
надає більше гнучкості! Спочатку це може здатися складним, але опанування цього підходу значно полегшить написання складних запитів.
1. Які стовпці є обов'язковими при використанні оператора UNION
у SQL?
2. Як оператор UNION
за замовчуванням обробляє дублікати рядків?
Дякуємо за ваш відгук!