İşleçleri ayarlama
Şunun için geçerlidir: Databricks SQL denetimi yes Databricks Runtime
İki alt sorguları tek bir sorguda birleştirir. Databricks SQL üç tür küme işlecini destekler:
EXCEPT
INTERSECT
UNION
Sözdizimi
subquery1 { { UNION [ ALL | DISTINCT ] |
INTERSECT [ ALL | DISTINCT ] |
EXCEPT [ ALL | DISTINCT ] } subquery2 } [...] }
subquery1, subquery2
SELECT'te belirtilen iki
subquery
yan tümce. Her iki alt sorgu da aynı sayıda sütuna sahip olmalı ve ilgili her sütun için en az ortak türü paylaşmalıdır.UNION [ALL | DISTINCT]
Subquery2' sonucunu
subquery1 plus the rows of
döndürür.Belirtilirse
ALL
, yinelenen satırlar korunur.Belirtilirse
DISTINCT
, sonuç yinelenen satır içermez. Bu varsayılan değerdir.INTERSECT [ALL | DISTINCT]
Her iki alt sorguda da bulunan satır kümesini döndürür.
hem içinde hem de
subquery
içindesubquery1
birden çok kez görünen bir satır belirtilirseALL
, birden çok kez döndürülür.Belirtilirse
DISTINCT
, sonuç yinelenen satırlar içermez. Bu varsayılan değerdir.[TÜMÜ | DISTINCT ]
içinde
subquery1
olmayansubquery2
satırları döndürür.belirtilirse
ALL
, içindekisubquery2
her satır dosyasından birden çok eşleşmedensubquery1
tam olarak birini kaldırır.belirtilirse
DISTINCT
, işlemi uygulamadan önce yinelenen satırlar kaldırılırsubquery1
, bu nedenle tüm eşleşmeler kaldırılır ve sonuçta yinelenen satırlar (eşleştirilen veya eşleşmeyen) olmaz. Bu varsayılan değerdir.için
EXCEPT
bir söz dizimi alternatifi olarak belirtebilirsinizMINUS
.
Zincirleme kümesi işlemleri INTERSECT
ve'den UNION
EXCEPT
daha yüksek önceliğe sahip olduğunda.
Her sonuç sütununun türü, ve subquery2
içindeki subquery1
ilgili sütunların en az ortak türüdür.
Örnekler
-- 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