شبكة تعلم مع ناو

كيف تتعامل DISTINCT مع قيم NULL المتكررة؟

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

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

مثال

CREATE TABLE customers_null_distinct_demo (city VARCHAR(30));
INSERT INTO customers_null_distinct_demo VALUES ('Amman'), ('Amman'), (NULL), (NULL);
SELECT DISTINCT city FROM customers_null_distinct_demo;

تحتوي النتيجة على صف للمدينة وصف واحد للقيمة NULL، دون ضمان ترتيب بينهما.

باختصار: DISTINCT تبقي نسخة واحدة من NULL عندما تظهر في العمود المختار.

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

اختبر نفسك

خمسة أسئلة سريعة، مع الإجابة والشرح بعد كل سؤال.