Bagikan melalui


Operator set

Berlaku untuk:centang ditandai ya Databricks SQL centang ditandai ya Databricks Runtime

Menggabungkan subquery1 sebelumnya dan subquery2 menjadi satu. Azure Databricks mendukung tiga jenis operator set:

  • EXCEPT
  • INTERSECT
  • UNION

Sintaks

{ UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] subquery2 } [...]
  • subkueri2

    Setiap dua klausa subquery seperti yang ditentukan dalam SELECT (subpilih). Kedua subkueri harus memiliki jumlah kolom yang sama dan memiliki jenis yang paling tidak umum untuk setiap kolom.

  • UNION [SEMUA | UNIK]

    Mengembalikan hasil subquery1 ditambah baris subquery2.

    Jika ALL ditentukan, baris duplikat dipertahankan.

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

  • INTERSECT [SEMUA | UNIK]

    Menampilkan set baris yang ada di kedua subkueri.

    Jika ALL ditentukan, baris yang muncul beberapa kali dalam subquery1 dan subquery akan dikembalikan beberapa kali.

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

  • KECUALI [SEMUA | UNIK ]

    Menampilkan baris dalam subquery1 yang tidak ada di subquery2.

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

    Jika DISTINCT ditentukan, baris duplikat dihapus dari subquery1 sebelum menerapkan operasi. Dengan begitu, 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.

Ketika operasi set penautan INTERSECT memiliki prioritas yang lebih tinggi daripada UNION dan EXCEPT.

Jenis setiap kolom hasil adalah jenis yang paling tidak umum dari setiap kolom di subquery1 dan subquery2.

Jika kolom hasil adalah STRING kolasenya diturunkan dengan menerapkan aturan prioritas kolase ke kolom dalam subkueri.

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