مشاركة عبر


تعيين عوامل التشغيل

ينطبق على: وضع علامة Databricks SQL وضع علامة Databricks Runtime

يجمع بين استعلامين فرعيين في استعلام واحد. يدعم Databricks SQL ثلاثة أنواع من عوامل تشغيل المجموعة:

  • EXCEPT
  • INTERSECT
  • UNION

بناء الجملة

subquery1 { { UNION [ ALL | DISTINCT ] |
              INTERSECT [ ALL | DISTINCT ] |
              EXCEPT [ ALL | DISTINCT ] } subquery2 } [...] }
  • الاستعلام الفرعي1، الاستعلام الفرعي2

    أي بندين subquery كما هو محدد في SELECT. يجب أن يكون لكلا الاستعلامين الفرعيين نفس عدد الأعمدة وأن يشتركا في نوع أقل شيوعا لكل عمود من الأعمدة المعنية.

  • UNION [ALL | DISTINCT]

    إرجاع نتيجة subquery1 plus the rows of الاستعلام الفرعي 2'.

    إذا ALL تم تحديد صفوف مكررة يتم الاحتفاظ بها.

    إذا DISTINCT تم تحديد النتيجة لا تحتوي على أي صفوف مكررة. هذا هو الوضع الافتراضي.

  • INTERSECT [الكل | DISTINCT]

    إرجاع مجموعة الصفوف الموجودة في كلا الاستعلامين الفرعيين.

    إذا ALL تم تحديد صف يظهر عدة مرات في subquery1 وكذلك في subquery سيتم إرجاع عدة مرات.

    إذا DISTINCT تم تحديد النتيجة لا تحتوي على صفوف مكررة. هذا هو الوضع الافتراضي.

  • باستثناء [الكل | DISTINCT ]

    إرجاع الصفوف التي ليست في subquery1 subquery2.

    إذا ALL تم تحديده، فسيزيل كل صف في subquery2 بالضبط واحدا من التطابقات المتعددة المحتملة من subquery1.

    إذا DISTINCT تم تحديدها، تتم إزالة الصفوف المكررة من subquery1 قبل تطبيق العملية، بحيث تتم إزالة كافة التطابقات ولن تحتوي النتيجة على صفوف مكررة (متطابقة أو غير متطابقة). هذا هو الوضع الافتراضي.

    يمكنك تحديد MINUS كبديل لبناء الجملة ل EXCEPT.

عندما يكون لعمليات 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