Mengatur operator
Berlaku untuk: pemeriksaan Databricks SQL Databricks Runtime
Menggabungkan dua subkueri menjadi satu. Databricks SQL mendukung tiga jenis operator set:
EXCEPT
INTERSECT
UNION
Sintaks
subquery1 { { UNION [ ALL | DISTINCT ] |
INTERSECT [ ALL | DISTINCT ] |
EXCEPT [ ALL | DISTINCT ] } subquery2 } [...] }
subkueri1, subkueri2
subquery
Dua klausa apa pun seperti yang ditentukan dalam SELECT. Kedua subkueri harus memiliki jumlah kolom yang sama dan berbagi jenis yang paling tidak umum untuk setiap kolom masing-masing.UNION [SEMUA | BERBEDA]
Mengembalikan hasil subkueri2
subquery1 plus the rows of
'.Jika
ALL
ditentukan baris duplikat dipertahankan.Jika
DISTINCT
ditentukan, hasilnya tidak berisi baris duplikat apa pun. Ini adalah default.INTERSECT [SEMUA | BERBEDA]
Mengembalikan kumpulan baris yang berada di kedua subkueri.
Jika
ALL
ditentukan baris yang muncul beberapa kali disubquery1
serta disubquery
akan dikembalikan beberapa kali.Jika
DISTINCT
ditentukan, hasilnya tidak berisi baris duplikat. Ini adalah default.KECUALI [SEMUA | BERBEDA ]
Mengembalikan baris
subquery1
yang tidak ada dalamsubquery2
.Jika
ALL
ditentukan, setiap baris disubquery2
akan menghapus salah satu dari kemungkinan beberapa kecocokan darisubquery1
.Jika
DISTINCT
ditentukan, baris duplikat dihapus sebelumsubquery1
menerapkan operasi, sehingga semua kecocokan dihapus dan hasilnya tidak akan memiliki baris duplikat (cocok atau tidak cocok). Ini adalah default.Anda dapat menentukan
MINUS
sebagai alternatif sintaks untukEXCEPT
.
Saat merangkai operasi INTERSECT
set memiliki prioritas yang lebih tinggi daripada UNION
dan EXCEPT
.
Jenis setiap kolom hasil adalah jenis kolom masing-masing yang paling tidak umum di subquery1
dan subquery2
.
Contoh
-- 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