Mengatur operator

Berlaku untuk:check ditandai ya pemeriksaan Databricks SQL ditandai ya 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 di subquery1 serta di subquery akan dikembalikan beberapa kali.

    Jika DISTINCT ditentukan, hasilnya tidak berisi baris duplikat. Ini adalah default.

  • KECUALI [SEMUA | BERBEDA ]

    Mengembalikan baris subquery1 yang tidak ada dalam subquery2.

    Jika ALL ditentukan, setiap baris di subquery2 akan menghapus salah satu dari kemungkinan beberapa kecocokan dari subquery1.

    Jika DISTINCT ditentukan, baris duplikat dihapus sebelum subquery1 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 untuk EXCEPT.

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