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

ينطبق على:التحقق تم وضع علامة نعم على التحقق من 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 [ALL | DISTINCT]

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

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

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

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

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

    إذا 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