تعمل DISTINCT على القيم الموجودة في أعمدة النتيجة، بما فيها القيم الناتجة عن العمليات الحسابية. إذا عرضنا price * quantity وحده، فإن طلبين مختلفين قد يتحولان إلى قيمة واحدة عندما يكون حاصل الضرب متساويًا. اختلاف السعر أو الكمية في الصفوف الأصلية لا يكفي لإبقاء نتيجتين إذا لم نعرض هذين العمودين.
أما إذا اخترنا السعر والكمية معًا، فإن DISTINCT تقارن زوج القيم نفسه. قد يكون الزوجان مختلفين رغم أن حاصل ضربهما واحد. لذلك فإن تغيير قائمة SELECT يغير معنى التكرار الذي يجري إزالته. قبل توقع عدد الصفوف، يجب تحديد ما الذي يظهر في النتيجة فعلًا: هل هو مجموع أو حاصل ضرب، أم المدخلات الأصلية، أم عدة أعمدة تجمع بين الاثنين؟
مثال
CREATE TABLE orders_distinct_math_demo (price INT, quantity INT);
INSERT INTO orders_distinct_math_demo VALUES (10, 2), (5, 4), (10, 2);
SELECT DISTINCT price * quantity AS total FROM orders_distinct_math_demo;
SELECT DISTINCT price, quantity FROM orders_distinct_math_demo;
يعيد الأول قيمة واحدة، ويعيد الثاني زوجين مختلفين من القيم.
باختصار: DISTINCT تقارن الناتج المعروض، وقد تتساوى النتائج الحسابية لمدخلات مختلفة.
هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.