عند الإشارة إلى اسم مستعار داخل ORDER BY، يجب كتابته بوصفه معرفًا، لا نصًا ثابتًا. إذا كان الاسم total، يمكن كتابة ORDER BY total أو استخدام العلامتين الخلفيتين حول الاسم. أما ORDER BY ‘total’ فيشير إلى السلسلة النصية نفسها، فتكون قيمة تعبير الترتيب متساوية لجميع الصفوف.
قد ينفذ الاستعلام دون خطأ، لكنه لا يفرض الترتيب المطلوب بحسب العمود المحسوب. هذا مثال على أهمية التمييز بين علامات النصوص وعلامات المعرفات في MySQL. لا يمكن الجزم بترتيب الصفوف عندما يكون معيارها الوحيد ثابتًا. كما أن كتابة اسم صحيح داخل علامتي اقتباس مفردتين لا تجعل النص مرجعًا إلى ذلك الاسم تلقائيًا عند استخدامه هنا. الحل هو الإشارة إلى الاسم المستعار بالطريقة المناسبة.
مثال
CREATE TABLE orders_quoted_alias_demo (price INT, quantity INT);
INSERT INTO orders_quoted_alias_demo VALUES (10, 3), (20, 1);
SELECT price * quantity AS total FROM orders_quoted_alias_demo ORDER BY total;
يرتب المثال النتائج باستخدام القيم المحسوبة فعلًا، وهي 20 ثم 30.
باختصار: اكتب الاسم المستعار كمعرف في ORDER BY، لأن الاقتباس المفرد يجعله نصًا ثابتًا.
هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.