Oracle union all: UNION ALL ОПЕРАТОР — Oracle PL/SQL •MySQL •MariaDB •SQL Server •SQLite
Содержание
sql — объединение и объединение всех в базе данных оракула
спросил
Изменено
3 года, 9 месяцев назад
Просмотрено
5к раз
При выполнении следующих двух запросов (сосредоточьтесь на части между двумя звездочками * ____ *) мне действительно интересно, как позиция UNION ALL меняет вывод. Я не могу понять.
Запрос 1
ВЫБЕРИТЕ 'Джек' КАК Имя, 100 Метки AS ИЗ ДВОЙНОГО *UNION All SELECT 'Jack' AS Name, 100 AS Marks FROM DUAL* UNION SELECT 'Jack' AS Name, 100 AS Marks FROM DUAL
Результат запроса
ИМЯ ЗНАКИ Джек 100
Запрос 2
ВЫБЕРИТЕ 'Джек' КАК Имя, 100 меток AS ИЗ ДВОЙНОГО UNION SELECT 'Jack' AS Name, 100 AS Marks FROM DUAL *UNION ALL SELECT 'Jack' AS Name, 100 AS Marks FROM DUAL*
Результат запроса
ИМЯ ЗНАКИ Джек 100 Джек 100
Спасибо 🙂
- sql
- oracle
- union
1
Если вы не укажете круглые скобки, select
будут выполняться один за другим. Все операторы множества минус
, объединение
, объединение всех
, пересечение
имеют одинаковый приоритет.
Документация Oracle
В первом запросе UNION
выполняется в конце, чтобы в запросе не было повторяющихся строк. Во втором случае UNION ALL
выполняется в конце, поэтому в вашем запросе будут повторяющиеся строки.
3
Разница между Union и Union all заключается в том, что Union all не удаляет повторяющиеся строки,
вывод первого запроса:
шаг 1:
SELECT 'Jack' AS Name, 100 AS Marks FROM DUAL UNION All SELECT 'Jack' AS Name, 100 AS Marks FROM DUAL
результат 2 строки, потому что union all допускает дублирование.
шаг 2:
UNION SELECT 'Jack' AS Name, 100 AS Marks FROM DUAL
этот запрос выберет только строку без дубликатов из двух вышеуказанных строк и самой себя.
возвращает 1 строку.
во втором запросе…
шаг 1
ВЫБЕРИТЕ 'Jack' AS Name, 100 AS Marks FROM DUAL UNION SELECT 'Jack' AS Name, 100 AS Marks FROM DUAL
возвращает 1 строку, поскольку объединение выбирает только отдельные строки.
шаг 2
UNION ALL SELECT 'Jack' AS Name, 100 AS Marks FROM DUAL
возвращает 2 строки, поскольку допускает дублирование.
1
И объединение, и объединение имеют тот же приоритет, что и операции. Таким образом, при отсутствии круглых скобок ваши два союза будут оцениваться сверху вниз. Ваш первый запрос оценивается следующим образом:
SELECT Name, Marks ОТ ( ВЫБЕРИТЕ 'Jack' AS Name, 100 AS Marks FROM DUAL СОЮЗ Все ВЫБЕРИТЕ 'Jack' AS Name, 100 AS Marks FROM DUAL ) т СОЮЗ ВЫБЕРИТЕ 'Jack' AS Name, 100 AS Marks FROM DUAL
То же самое относится ко второму запросу.
1
Чтобы понять это поведение, вам нужно четко понимать разницу между UNION и UNION ALL.
Запрос 1: Вывод первых двух строк вернет 2 строки. Однако последняя строка (инструкция sql) с оператором UNION удалит повторяющиеся строки, включая собственный вывод. Итак, всего первый запрос вернет только 1 строку.
Запрос 2: Теперь UNION находится на 2-й строке. После объединения с 1-й строкой он снова вернет только 1 строку. Но в 3-й строке с «ОБЪЕДИНЕНИЕМ ВСЕХ» он вернет 2 строки. Потому что «ОБЪЕДИНЕНИЕ ВСЕХ» не удалит дубликаты.
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google
Зарегистрироваться через Facebook
Зарегистрируйтесь, используя адрес электронной почты и пароль
Опубликовать как гость
Электронная почта
Обязательно, но не отображается
Опубликовать как гость
Электронная почта
Требуется, но не отображается
Union & Union Все операторы набора SQL в базе данных Oracle
youtube.com/embed/mLo3PDRJ2kI?feature=oembed» frameborder=»0″ allow=»accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture» allowfullscreen=»»>
Операторы набора позволяют нам объединять строки, возвращенные из двух или более запросов. В SQL у нас есть четыре оператора множеств.
- Союз
- Союз Все
- Пересечение
- Минус
В этом уроке мы изучим концепцию оператора Union и Union All set. Для демонстрационных целей я создал и заполнил две таблицы Cricket и Football. Оба из них имеют два столбца: имя и фамилию с тем же типом данных, что и Varchar2. Я также вставил некоторые строки в таблицы, вот скриншоты данных в этих таблицах.
Обе эти таблицы имеют 3 строки данных, и если вы внимательно посмотрите, то заметите, что в обеих из них есть повторяющиеся строки. Это строка 1, где имя Кларк, а фамилия Кент.
Теперь, когда мы разобрались с терминологией, давайте перейдем к теме и посмотрим, что такое операторы Union и Union All Set в Oracle SQL.
Оператор набора Union
Оператор набора UNION возвращает результаты всех участвующих запросов после устранения дублирования. Рассмотрим пример
ВЫБЕРИТЕ имя, фамилию ИЗ крикета
СОЮЗ
ВЫБЕРИТЕ имя, фамилию ИЗ футбола;
Здесь у нас есть 2 отдельных запроса. В первом запросе мы выбираем строки из столбца имени и фамилии таблицы Cricket, а во втором запросе мы извлекаем строки из столбца имени и фамилии таблицы Football, и оба эти запроса связаны с использованием оператора объединения.
При выполнении этого запроса будут возвращены все строки обоих столбцов обеих таблиц, кроме дубликата.
Оператор Union All Set
Оператор UNION ALL возвращает результаты всех участвующих запросов, включая повторяющиеся строки. Это означает, что если мы выполним один и тот же запрос, мы получим все строки, возвращаемые из обеих таблиц, вместе с дубликатом.
Позвольте мне продемонстрировать вам это.