شرح صفوف ومحتوى الفقرة
قدّم إصدار MySQL 8.0 ميزة التعبيرات الجدولية الشائعة (CTEs)، وهي مجموعات نتائج مؤقتة مسماة تُعرَّف في مطلع الاستعلام باستخدام الصيغة WITH cte_name AS (SELECT ...):
- القراءة المتسلسلة من الأعلى للأسفل: بدلاً من دفن الجداول المشتقة داخل أقواس متداخلة معقدة في جملة
FROM، تتيح لك تعبيراتWITHتنظيم منطق الاستعلام خطوة بخطوة من الأعلى إلى الأسفل. - نطاق عمر مؤقت للاستعلام فقط: يعيش التعبير الجدولي المؤقت طوال فترة تنفيذ التعليمة الوحيدة التي تليه مباشرةً (
SELECTأوINSERTأوUPDATEأوDELETE) ثم يزول تلقائياً.
SQL
-- Define a named CTE for customer paid totals, then join with users
WITH customer_paid_totals AS (
SELECT user_id, COUNT(*) AS orders_cnt,
SUM(total_amount) AS total_spent
FROM orders WHERE status = 'paid'
GROUP BY user_id
)
SELECT u.full_name, cpt.orders_cnt, cpt.total_spent
FROM customer_paid_totals AS cpt
INNER JOIN users AS u ON cpt.user_id = u.user_id
WHERE cpt.total_spent >= 500.00;