0Pricing
SQL Academy · درس

UNION وINTERSECT وEXCEPT

اجمع مجموعات النتائج المتوافقة باستخدام UNION، واعثر على الصفوف المشتركة باستخدام INTERSECT، وعلى الفرق باستخدام EXCEPT.

UNION وINTERSECT وEXCEPT درس مجاني في SQL Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في SQL Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة SQL Academy 4 دروس في المجموع.

نظرة عامة على عمليات المجموعات

تجمع ثلاثة معاملات للمجموعات مجموعات النتائج صفًا بصف:

  • UNION — الصفوف الموجودة في A أو B (مع إزالة التكرارات)
  • INTERSECT — الصفوف الموجودة في A وB
  • EXCEPT — الصفوف الموجودة في A ولكن NOT في B

UNION

دمج مجموعتي نتائج مع إزالة التكرارات:

SELECT email FROM users
UNION
SELECT email FROM newsletter_subscribers;

توافق الأعمدة

يجب أن يحتوي كلا الاستعلامين على العدد نفسه من الأعمدة وأنواع متوافقة:

-- OK:
SELECT email FROM users UNION SELECT email FROM customers;

-- ERROR — different column count:
SELECT email FROM users UNION SELECT email, name FROM customers;

INTERSECT

الصفوف التي تظهر في كلا الاستعلامين:

SELECT product_id FROM orders WHERE user_id = 1
INTERSECT
SELECT product_id FROM orders WHERE user_id = 2;
-- Products bought by BOTH users.

EXCEPT

الصفوف الموجودة في الاستعلام الأول دون الثاني:

SELECT product_id FROM products
EXCEPT
SELECT product_id FROM order_items;
-- Products never ordered.

ORDER BY مع معاملات المجموعات

ينطبق ORDER BY على النتيجة المجمعة بأكملها. ضعه في النهاية:

SELECT email FROM users
UNION
SELECT email FROM customers
ORDER BY email;

معاملات المجموعات وقيم NULL

في عمليات المجموعات، تُعامل قيمتا NULL على أنهما متساويتان — يزيل UNION التكرارات بينهما، ويطابق INTERSECT بينهما. (وهذا يختلف عن NULL = NULL في WHERE.)

معاملات المجموعات على الاستعلامات الفرعية

ضع الاستعلامات الفرعية بين قوسين لتوضيحها ولدمجها مع LIMIT:

(SELECT id FROM users ORDER BY created_at DESC LIMIT 10)
UNION
(SELECT id FROM users ORDER BY total DESC LIMIT 10);

أسبقية المعاملات

يتمتع INTERSECT بأسبقية أعلى من UNION/EXCEPT. استخدم الأقواس:

SELECT id FROM a
UNION
SELECT id FROM b
INTERSECT
SELECT id FROM c;
-- means: a UNION (b INTERSECT c)

-- Use parens to force order:
(SELECT id FROM a UNION SELECT id FROM b) INTERSECT SELECT id FROM c;

الأداء

يجري UNION فرزًا لإزالة التكرارات. وتؤدي INTERSECT وEXCEPT عملًا مشابهًا. وبالنسبة إلى المجموعات الكبيرة، فضّل أنماط JOIN/EXISTS، ولا تستخدم عمليات المجموعات إلا عندما تتوافق الدلالات بوضوح.

SQL القياسي مقابل اختلافات المورّدين

توجد المعاملات الثلاثة في PostgreSQL. ولم يضف MySQL ‏INTERSECT وEXCEPT إلا في الإصدار 8.0.31؛ أما الإصدارات الأقدم فتحاكيهما باستخدام JOIN/NOT IN.

مراجعة

تعبّر معاملات المجموعات عن OR/AND/MINUS على الصفوف.

  • UNION — دمج وإزالة التكرارات
  • INTERSECT — الصفوف المشتركة
  • EXCEPT — A ناقص B

تحقق سريع

أي معامل مجموعات يُرجع «الصفوف الموجودة في A وليست في B»؟

الأسئلة الشائعة

هل درس «UNION وINTERSECT وEXCEPT» مجاني؟

نعم — نص درس «UNION وINTERSECT وEXCEPT» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة SQL Academy، انتقل إلى CoddyKit PRO. تتضمن دورة SQL Academy 4 دروس في المجموع.

ماذا ستتعلم في «UNION وINTERSECT وEXCEPT»؟

اجمع مجموعات النتائج المتوافقة باستخدام UNION، واعثر على الصفوف المشتركة باستخدام INTERSECT، وعلى الفرق باستخدام EXCEPT. تتمرن على SQL Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ SQL Academy؟

لا تُشترط خبرة سابقة. SQL Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «UNION وINTERSECT وEXCEPT»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس SQL Academy هذا؟

نعم. كل درس في SQL Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. UNION وINTERSECT وEXCEPT
  2. UNION ALL مقابل UNION (تكلفة إزالة التكرارات)
  3. تعبيرات CASE واستعلامات Pivot
  4. أنماط Crosstab (PostgreSQL crosstab())
← العودة إلى SQL Academy