عند مزج UNION ALL وUNION في سلسلة واحدة غير محاطة بتجميعات تغير نطاق العمليات، يجب النظر إلى موضع حذف التكرار. تعني UNION دون كلمة إضافية UNION DISTINCT، وتحذف التكرار من النتيجة المجمعة إلى يسارها ومن الفرع الذي تدمجه معها.
لذلك لا يكفي القول إن كل وصلة تؤثر في فرعين منفصلين فقط. قد تُحذف تكرارات احتفظت بها عملية UNION ALL سابقة عندما تأتي بعدها عملية حذف تكرار. أما إذا أضفت فرعًا لاحقًا باستخدام UNION ALL، فقد تدخل تكرارات جديدة إلى النتيجة بعد تلك المرحلة.
مثال
SELECT 1 AS n
UNION ALL
SELECT 1 AS n
UNION
SELECT 2 AS n
ORDER BY n;
تظهر أهمية هذه القاعدة في الاستعلامات الطويلة التي تجمع مصادر عديدة. قراءة السلسلة كاملة وتحديد مواضع حذف التكرار يمنعان توقع أعداد صفوف غير صحيحة.
باختصار: قد تحذف UNION تكرارات نتجت عن UNION ALL إلى يسارها؛ فموضع كل عملية يؤثر في النتيجة.
هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.