SQL — Умови UNION

185

Від автора: умова/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 виглядає наступним чином.

SQL — Умови UNION

Таблиця 2 — Таблиця ORDERS виглядає наступним чином.

SQL — Умови UNION

Тепер давайте об’єднаємо ці дві таблиці в інструкції 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;

Це дасть наступний результат –

SQL — Умови UNION

Умова 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 виглядає наступним чином.

SQL — Умови UNION

Таблиця 2 — таблиця ORDERS виглядає наступним чином.

SQL — Умови UNION

Тепер давайте об’єднаємо ці дві таблиці в інструкції 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;

Це дасть наступний результат:

SQL — Умови UNION

Існує дві інших умови або оператора схожих на умову UNION.

Умова SQL INTERSECT − використовується для об’єднання двох операторів SELECT, але повертає тільки рядки з першого оператора SELECT, які збігаються з рядком з другого оператора SELECT.

Умова SQL EXCEPT − об’єднує два оператора SELECT і повертає рядки з першого оператора SELECT, які не повертаються другим оператором SELECT.