ما الفرق بين UNION وUNION ALL في الاحتفاظ بالصفوف المتكررة؟

سهلقراءة دقيقةآخر تحديث 3 أكتوبر 2026

SQL قواعد البيانات

الإجابة

تجمع UNION وUNION ALL صفوف استعلامين أو أكثر في نتيجة واحدة. الفرق الأساسي هو التعامل مع التكرار: تحذف UNION الصفوف المتطابقة، بينما تحتفظ UNION ALL بكل الصفوف التي تنتجها الفروع. يشمل حذف التكرار التكرارات الموجودة داخل الفرع نفسه، وليس فقط الصفوف المشتركة بين فرعين.

اختيار العملية يعتمد على معنى البيانات. إذا كانت كل مشاهدة أو عملية شراء حدثًا مستقلًا، فقد تحتاج إلى الاحتفاظ بتكرار القيم. أما إذا كنت تريد قائمة قيم فريدة، فيمكن أن يناسبك حذف التكرار. لا تتضمن أي من العمليتين ضمانًا لترتيب النتيجة دون استخدام ترتيب صريح.

مثال

SELECT 7 AS value
UNION ALL
SELECT 7 AS value;

يقيس التكرار تطابق جميع الأعمدة المعروضة في الصف. ولهذا قد تختلف النتيجة إذا أضفت عمودًا يميز مصدر كل صف أو يحمل معلومة مختلفة عنه.

باختصار: استخدم UNION ALL للاحتفاظ بكل الصفوف، واستخدم UNION عندما تحتاج إلى حذف الصفوف المتطابقة.

هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.

اختبر فهمك

كم صفًا يعيد الاستعلام الأول وكم صفًا يعيد الثاني؟

CREATE TABLE countries (
  name VARCHAR(20)
);
INSERT INTO countries (name) VALUES ('Jordan'), ('Jordan');

-- الاستعلام الأول
SELECT name FROM countries
UNION
SELECT name FROM countries;

-- الاستعلام الثاني
SELECT name FROM countries
UNION ALL
SELECT name FROM countries;