"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية اختيار أفضل 3 صفوف من كل فئة في MySQL بدون وظائف تحليلية؟

كيفية اختيار أفضل 3 صفوف من كل فئة في MySQL بدون وظائف تحليلية؟

تم النشر بتاريخ 2024-11-03
تصفح:783

How to Select the Top 3 Rows from Each Category in MySQL Without Analytic Functions?

اختيار أفضل 3 صفوف من فئات متعددة في MySQL

قد يكون تحديد الصفوف العليا من كل فئة داخل الجدول أمرًا صعبًا. إحدى الطرق التي تستخدم طرق العرض والاستعلامات الفرعية، كما هو موضح في المحاولة الأولية، قد تؤدي إلى نتائج غير صحيحة.

يستخدم النهج الأكثر فعالية وظائف تحليلية، والتي لا يدعمها MySQL أصلاً. ومع ذلك، من الممكن محاكاة هذه الوظائف باستخدام المتغيرات. وإليك الطريقة:

SELECT x.*
FROM (
  SELECT t.*,
         CASE
           WHEN @category != t.category THEN @rownum := 1
           ELSE @rownum := @rownum   1
         END AS rank,
         @category := t.category AS var_category
  FROM TBL_ARTIKUJT t
  JOIN (SELECT @rownum := NULL, @category := '') r
  ORDER BY t.category
) x
WHERE x.rank 

يقوم هذا الاستعلام بتهيئة المتغيرات @rownum و@category باستخدام عملية JOIN. ثم يقوم بعد ذلك بتعيين تصنيف لكل صف بناءً على فئته، مع زيادة الترتيب إذا تغيرت الفئة.

أخيرًا، يحدد الاستعلام فقط الصفوف ذات الترتيب 3 أو أقل. لاحظ أنك قد تحتاج إلى تعديل جملة SELECT x.* لتشمل الأعمدة المطلوبة فقط.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3