انتقل إلى محتوى الدرس

Column Aliases in Execution Flow عمل الأسماء المستعارة بالترتيب

تتبّع بدقة الجمل التي يمكنها رؤية الأسماء المستعارة المعرّفة في SELECT والجمل التي لا يمكنها ذلك.
1 صفوف تعليمية
MySQL
8 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

بما أن الأسماء المستعارة للأعمدة AS alias_name تُعرَّف في مرحلة SELECT (المرحلة الخامسة في التنفيذ المنطقي)، فإن صلاحية استخدامها في بقية جمل الاستعلام تخضع لقواعد واضحة:

  • ممنوعة قطعياً في WHERE (المرحلة 2): عند تنفيذ WHERE لم تكن مرحلة SELECT قد بدأت بعد، لذا فإن استخدام الاسم المستعار داخل WHERE يُطلق دائماً الخطأ Error 1054: Unknown column.
  • مدعومة قياسياً في ORDER BY (المرحلة 7): تعمل الأسماء المستعارة في ORDER BY في جميع قواعد البيانات لأن الفرز يتم بعد اكتمال SELECT.
  • امتداد MySQL في GROUP BY و HAVING: يدعم محرك MySQL كامتداد مريح التعرّف على الأسماء المستعارة داخل GROUP BY و HAVING أيضاً.

معرفة هذه القاعدة تختصر وقت تشخيص أخطاء الأعمدة غير المعروفة في الاستعلامات التحليلية.

SQL
-- WHERE uses raw expression; GROUP BY, HAVING & ORDER BY use alias
SELECT (unit_price - discount_usd) AS net_price,
       COUNT(*)                    AS item_count
FROM products
WHERE (unit_price - discount_usd) > 0
GROUP BY net_price
HAVING item_count >= 2
ORDER BY net_price DESC;