SQL UNION
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 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 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 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
- Упражнения по SQL, практика, решение
- SQL Получить данные из таблиц [33 Упражнения]
- Булевы и реляционные операторы SQL [12 упражнений]
- Подстановочные знаки SQL и специальные операторы [22 упражнения]
- Агрегатные функции SQL [25 упражнений]
- Вывод запроса форматирования SQL [10 упражнений]
- SQL-запросы к нескольким таблицам [7 упражнений]
- ФИЛЬТРАЦИЯ И СОРТИРОВКА в базе данных персонала [38 упражнений]
- SQL СОЕДИНЯЕТ
- SQL ПОДПИСИ
- SQL Union [9 упражнений]
- SQL View [16 упражнений]
- Управление учетными записями пользователей SQL [16 упражнение]
- База данных фильмов
- ОСНОВНЫЕ запросы к базе данных фильмов [10 упражнений]
- ПОДПИСКИ на фильм База данных [16 упражнений]
- ПРИСОЕДИНЯЕТСЯ к базе данных фильма [24 упражнения]
- Футбольная база
- Вступление
- ОСНОВНЫЕ запросы по футболу базы данных [29 упражнений]
- ПОДПИСКИ по футбольной базе данных [33 упражнения]
- База данных больницы
- База данных сотрудников
- ОСНОВНЫЕ запросы к базе данных сотрудников [115 упражнений]
- БРОНИРОВАНИЕ на сотрудника База данных [77 Упражнения]
- Еще не все!
Хотите улучшить вышеуказанную статью? Вносите свои заметки / комментарии / примеры через Disqus.
Предыдущая: Вложенные подзапросы
Далее: Создать вид
Новый контент: Composer: менеджер зависимостей для PHP , R программирования