Настройка операторов
Область применения: Databricks SQL Databricks Runtime
Объединяет два вложенных запроса в один. Databricks SQL поддерживает три типа операторов набора:
EXCEPT
INTERSECT
UNION
Синтаксис
subquery1 { { UNION [ ALL | DISTINCT ] |
INTERSECT [ ALL | DISTINCT ] |
EXCEPT [ ALL | DISTINCT ] } subquery2 } [...] }
subquery1, subquery2
Любые два
subquery
предложения, указанные в select. Оба вложенных запроса должны иметь одинаковое количество столбцов и иметь минимальный общий тип для каждого соответствующего столбца.UNION [ALL | DISTINCT]
Возвращает результат вложенного
subquery1 plus the rows of
запроса2'.Если
ALL
указан параметр, повторяющиеся строки сохраняются.Если
DISTINCT
задано значение , результат не содержит повторяющихся строк. Это значение по умолчанию.INTERSECT [ALL | DISTINCT]
Возвращает набор строк, которые находятся в обоих вложенных запросах.
Если
ALL
задано значение , строка, которая отображается несколько раз вsubquery1
, а также вsubquery
, возвращается несколько раз.Если
DISTINCT
задано значение , результат не содержит повторяющихся строк. Это значение по умолчанию.EXCEPT [ALL | DISTINCT ]
Возвращает строки, в
subquery1
которых нет вsubquery2
.Если
ALL
задан параметр , каждая строка вsubquery2
удалит ровно одно из возможных совпадений изsubquery1
.Если
DISTINCT
задан параметр , повторяющиеся строки удаляются изsubquery1
перед применением операции, поэтому все совпадения удаляются, а в результате не будет повторяющихся строк (совпадающих или несовпаденных). Это значение по умолчанию.В качестве альтернативы
EXCEPT
синтаксису можно указатьMINUS
.
Если операции INTERSECT
цепочки наборов имеют более высокий приоритет, чем UNION
и EXCEPT
.
Тип каждого столбца результатов является наименее распространенным типом соответствующих столбцов в subquery1
и subquery2
.
Примеры
-- Use number1 and number2 tables to demonstrate set operators in this page.
> CREATE TEMPORARY VIEW number1(c) AS VALUES (3), (1), (2), (2), (3), (4);
> CREATE TEMPORARY VIEW number2(c) AS VALUES (5), (1), (1), (2);
> SELECT c FROM number1 EXCEPT SELECT c FROM number2;
3
4
> SELECT c FROM number1 MINUS SELECT c FROM number2;
3
4
> SELECT c FROM number1 EXCEPT ALL (SELECT c FROM number2);
3
3
4
> SELECT c FROM number1 MINUS ALL (SELECT c FROM number2);
3
3
4
> (SELECT c FROM number1) INTERSECT (SELECT c FROM number2);
1
2
> (SELECT c FROM number1) INTERSECT DISTINCT (SELECT c FROM number2);
1
2
> (SELECT c FROM number1) INTERSECT ALL (SELECT c FROM number2);
1
2
2
> (SELECT c FROM number1) UNION (SELECT c FROM number2);
1
3
5
4
2
> (SELECT c FROM number1) UNION DISTINCT (SELECT c FROM number2);
1
3
5
4
2
> SELECT c FROM number1 UNION ALL (SELECT c FROM number2);
3
1
2
2
3
4
5
1
1
2