кодесурса
«SQL

SQL UNION

script1adsense2code
script1adsense3code

UNION

Оператор SQL UNION объединяет результаты двух или более запросов и создает набор результатов, который включает извлеченные строки из участвующих запросов в UNION.

Содержание:

Основные правила объединения двух или более запросов с использованием UNION

Основные правила объединения двух или более запросов с использованием UNION:

1.) количество столбцов и порядок столбцов всех запросов должны быть одинаковыми.

2.) типы данных столбцов для включения таблицы в каждом запросе должны быть одинаковыми или совместимыми.

3.) Обычно возвращаемые имена столбцов берутся из первого запроса.

По умолчанию UNION ведет себя как UNION [DISTINCT], то есть устраняет дубликаты строк; однако использование ключевого слова ALL с UNION возвращает все строки, включая дубликаты.

Разница между SQL JOIN и UNION

1.) Столбцы соединяемых таблиц могут быть разными в JOIN, но в UNION количество столбцов и порядок столбцов всех запросов должны быть одинаковыми.

2.) UNION помещает строки из запросов друг за другом (помещает вертикально), но JOIN помещает столбец из запросов после друг друга (помещает горизонтально), то есть он создает декартово произведение.

Синтаксис:

 ВЫБЕРИТЕ <column_list> t [INTO]
[ОТСЮДА ]
[GROUP BY] [HAVING]
[СОЮЗ [ВСЕ]
SELECT <column_list>
[ОТСЮДА ]
[GROUP BY] [HAVING] ...]
[СОРТИРОВАТЬ ПО ]

Все запросы выполняются независимо, но их выходные данные объединяются.

В следующем примере с UNION не было добавлено ни одного предложения, поэтому по умолчанию UNION действует как UNION [DISTINCT], и в наборе результатов доступны только уникальные строки.

Образец таблицы: продукт

 PROD_CODE PROD_NAME COM_NAME LIFE
---------- --------------- ---------- ----------
PR001 телевизор SONY 7
PR002 DVD-ПЛЕЕР LG 9
PR003 IPOD PHILIPS 9
PR004 Звуковая система SONY 8
PR005 МОБИЛЬНАЯ NOKIA 6

Пример таблицы: покупка

 PUR_NO PROD_CODE PROD_NAME COM_NAME PUR_QTY PUR_AMOUNT
---------- ---------- --------------- ---------- ----- ----- ----------
         2 PR001 телевизор SONY 15 450000
         1 PR003 IPOD PHILIPS 20 60000
         3 PR007 LAPTOP HP 6 240000
         4 PR005 МОБИЛЬНАЯ NOKIA 100 300000
         5 PR002 DVD-ПЛЕЕР LG 10 30000
         6 PR006 ЗВУКОВАЯ СИСТЕМА CREATIVE 8 40000

Код SQL:

SELECT prod_code,prod_name
FROM product
UNION 
SELECT prod_code,prod_name
FROM purchase;

Выход:

 PROD_CODE PROD_NAME
---------- ---------------
PR001 TV
PR002 DVD-ПЛЕЕР
PR003 IPOD
PR004 Звуковая система
PR005 МОБИЛЬНЫЙ
PR006 Звуковая система
PR007 LAPTOP

Наглядное представление

«изобразительный

SQL UNION ALL

В следующем примере необязательное предложение ALL было добавлено с UNION, для которого все строки каждого запроса были доступны в наборе результатов. Здесь в вышеприведенном выводе строки маркировки не являются уникальными, но это было отображено. Если игнорировать предложение ALL, строки разметки появятся один раз.

Код SQL:

SELECT prod_code,prod_name,com_name
FROM product
UNION ALL
SELECT prod_code,prod_name,com_name
FROM purchase;

Выход:

«Sql

SQL UNION ALL использует где

В следующем примере два запроса были установлены с использованием двух разных критериев, включая предложение WHERE. Таким образом, все строки извлечения (включая дубликаты) отображаются в наборе результатов. Здесь, в этом примере, строки разметки идентичны, но они были показаны для предложения ALL вместе с UNION. Если игнорировать предложение ALL, строки разметки появятся один раз.

Код SQL:

SELECT prod_code,prod_name,com_name
FROM product 
WHERE life>6
UNION ALL
SELECT prod_code,prod_name,com_name
FROM purchase 
WHERE pur_qty>10

Выход:

«Sql

SQL UNION таблица к себе

В следующем примере два запроса были установлены с использованием двух разных критериев для одной и той же таблицы. Таким образом, все восстановленные строки (включая дубликаты) отображаются. Здесь, в этом примере, строки разметки идентичны, но они были показаны для предложения ALL вместе с UNION.

Код SQL:

SELECT prod_code,prod_name,com_name
FROM purchase 
WHERE pur_qty>6
UNION ALL
SELECT prod_code,prod_name,com_name
FROM purchase 
WHERE pur_amount>100000

«Sql

SQL UNION с разными именами столбцов

В следующем примере два запроса были установлены с использованием двух разных критериев и разных столбцов. Различные столбцы в двух операторах - это «жизнь» и «pur_qty». Но так как тип данных одинаков для обоих столбцов, результат отображается. Обычно возвращаемые имена столбцов берутся из первого запроса.

Код SQL:

SELECT prod_code,prod_name,life
FROM product
WHERE life>6
UNION
SELECT prod_code,prod_name,pur_qty
FROM purchase
WHERE pur_qty<20

Выход:

 PROD_CODE PROD_NAME LIFE
---------- --------------- ----------
PR001 TV 7
PR001 TV 15
PR002 DVD-ПЛЕЕР 9
PR002 DVD-ПЛЕЕР 10
PR003 IPOD 9
PR004 Звуковая система 8
PR006 ЗВУКОВАЯ СИСТЕМА 8
PR007 LAPTOP 6

SQL UNION с внутренним соединением

В следующем примере объединение производится двумя запросами. Запросы являются двумя внутренними операторами соединения. В первом запросе соединение происходит между двумя таблицами, в которых prod_code обеих таблиц одинаковы, а во втором запросе соединение происходит между двумя таблицами, в которых prod_name обеих таблиц совпадают.

Код SQL:


SELECT product.prod_code,product.prod_name,
purchase.pur_qty, purchase.pur_amount  
FROM product
INNER JOIN purchase  
ON product.prod_code =purchase.prod_code
UNION
SELECT product.prod_code,product.prod_name,
purchase.pur_qty, purchase.pur_amount  
FROM product
INNER JOIN purchase  
ON product.prod_name =purchase.prod_name;

Выход:

 PROD_CODE PROD_NAME PUR_QTY PUR_AMOUNT
---------- --------------- ---------- ----------
PR001 TV 15 450000
PR002 DVD-ПЛЕЕР 10 30000
PR003 IPOD 20 60000
PR004 Звуковая система 8 40000
PR005 МОБИЛЬНЫЙ 100 300000

SQL: Союз против Союза Всех

Основное различие между UNION и UNION ALL заключается в том, что UNION удаляет дубликаты записей, а UNION ALL - нет. Давайте применим эти две команды к двум таблицам table1 и table2.

Строки в таблице 1:

 FIELD1
---------
        1
        4
        2
        3

Строки в таблице2:

 FIELD1
----------
         2
         4
         2
         1  

Пример UNION (удаляет все повторяющиеся записи):

Код SQL:

SELECT field1
FROM table1
UNION
SELECT field1
FROM table2;

Выход:

 FIELD1
----------
         1
         2
         3
         4

UNION ALL Пример:

Код SQL:

SELECT field1
FROM table1
UNION ALL
SELECT field1
FROM table2;

Выход:

 FIELD1
----------
         1
         4
         2
         3
         2
         4
         2
         1

Смотрите нашу базу данных моделей

Упражнения по SQL

Хотите улучшить вышеуказанную статью? Вносите свои заметки / комментарии / примеры через Disqus.

Предыдущая: Вложенные подзапросы
Далее: Создать вид

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code