Від автора: умова/SQL-оператор UNION використовується для об’єднання результатів двох або більше операторів SELECT без включення повторюваних рядків.
Для використання умови UNION, кожен оператор SELECT повинен містити
Таку ж кількість обраних стовпців
Таку ж кількість виразів стовпців
Той же тип даних
Вони повинні розташовуватися в тому ж порядку
Але вони не обов’язково повинні бути однакової довжини.
Синтаксис
Основний синтаксис умови UNION наступний:
SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]
UNION
SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]
Тут дана умова може бути будь-яким виразом, заданим виходячи з ваших потреб.
Приклад
Розглянемо наступні дві таблиці. Таблиця 1 — Таблиця CUSTOMERS виглядає наступним чином.
Таблиця 2 — Таблиця ORDERS виглядає наступним чином.
Тепер давайте об’єднаємо ці дві таблиці в інструкції SELECT наступним чином:
SELECT ID, NAME, AMOUNT, DATE
FROM CUSTOMERS
LEFT JOIN ORDERS
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID
UNION
SELECT ID, NAME, AMOUNT, DATE
FROM CUSTOMERS
RIGHT JOIN ORDERS
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;
Це дасть наступний результат –
Умова UNION ALL
Оператор UNION ALL використовується для об’єднання результатів двох операторів SELECT, з включенням повторюваних рядків.
Ті ж правила, які застосовуються до умові UNION, будуть застосовуватися до оператора UNION ALL.
Синтаксис
Основний синтаксис UNION ALL наступний.
SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]
UNION ALL
SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]
Тут дана умова може бути будь-яким виразом, заданим виходячи з ваших потреб
Приклад
Розглянемо наступні дві таблиці: Таблиця 1 — Таблиця CUSTOMERS виглядає наступним чином.
Таблиця 2 — таблиця ORDERS виглядає наступним чином.
Тепер давайте об’єднаємо ці дві таблиці в інструкції SELECT наступним чином:
SELECT ID, NAME, AMOUNT, DATE
FROM CUSTOMERS
LEFT JOIN ORDERS
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID
UNION ALL
SELECT ID, NAME, AMOUNT, DATE
FROM CUSTOMERS
RIGHT JOIN ORDERS
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;
Це дасть наступний результат:
Існує дві інших умови або оператора схожих на умову UNION.
Умова SQL INTERSECT − використовується для об’єднання двох операторів SELECT, але повертає тільки рядки з першого оператора SELECT, які збігаються з рядком з другого оператора SELECT.
Умова SQL EXCEPT − об’єднує два оператора SELECT і повертає рядки з першого оператора SELECT, які не повертаються другим оператором SELECT.