شرح صفوف ومحتوى الفقرة
يدعم محرك MySQL 8 ميزة مريحة تتيح الإشارة إلى الاسم المستعار المعرّف بـ AS للدالة التجميعية في SELECT مباشرةً داخل جملة HAVING.
- اختصار الكود في MySQL: يمكنك كتابة
SUM(total_usd) AS total_spentفي العرض ثم كتابةHAVING total_spent >= 500دون إعادة كتابة الدالة. - ملاحظة التوافق القياسي: في معيار ISO SQL الصارم (وبعض المحركات الأخرى)، تُنفَّذ
HAVINGمنطقياً قبل ربط أسماءSELECTالمستعارة؛ لذا فإن كتابة الدالة الصريحةHAVING SUM(total_usd) >= 500يضمن عمل الاستعلام على كافة قواعد البيانات.
داخل بيئة MySQL 8 يعمل كلا الأسلوبين بنفس الكفاءة وخطة التنفيذ تماماً.
SQL
-- Using SELECT aggregate aliases inside HAVING in MySQL 8
SELECT product_id,
COUNT(*) AS review_count,
AVG(rating) AS avg_rating
FROM product_reviews
GROUP BY product_id
HAVING review_count >= 10
AND avg_rating >= 4.5
ORDER BY avg_rating DESC;