تحديد أفضل الصفوف لكل فئة في MySQL
لاسترداد عدد محدود من الصفوف من كل فئة في جدول، يمكنك الاستفادة من الوظائف التحليلية . ومع ذلك، لا تقدم MySQL هذه الوظائف بشكل مباشر. ومع ذلك، من الممكن محاكاتها باستخدام المتغيرات.
محاكاة الوظائف التحليلية
يحاكي استعلام MySQL التالي وظائف الوظائف التحليلية لتحديد أعلى 3 صفوف لكل فئة :
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 شرح
يحدد الاستعلام الفرعي جميع الصفوف من جدول TBL_ARTIKUJT ويقوم بتهيئة متغيرين للجلسة، @rownum و@category، لتتبع الترتيب والفئة الحالية.- يشير الترتيب المخصص لكل صف إلى موقعه ضمن فئته. عند مواجهة فئة جديدة، تتم إعادة تعيين الترتيب إلى 1.
- يتم استخدام var_category لتخزين الفئة لكل صف.
- تقوم عبارة SELECT الخارجية بتصفية الاستعلام الفرعي، مع تحديد الصفوف ذات التصنيف فقط أقل من أو يساوي 3.
- تسمح لك هذه الطريقة بتنفيذ الوظيفة المطلوبة دون الاعتماد على الوظائف التحليلية، التي لا تدعمها MySQL.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3