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

كيفية تصفية البيانات بناءً على العدد في MySQL دون استخدام Nested SELECT؟

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

How to Filter Data Based on Count in MySQL Without Using Nested SELECT?

MySQL - استخدام COUNT(*) في جملة WHERE

واجه المستخدم تحديًا أثناء محاولته تصفية البيانات في MySQL باستخدام وظيفة COUNT(*) في حيث جملة. لقد بحثوا عن طريقة فعالة لإنجاز هذه المهمة دون استخدام عبارة SELECT متداخلة، لأنها يمكن أن تستهلك موارد كبيرة.

قدم المستخدم الكود الزائف التالي لتوضيح النتيجة المرجوة:

SELECT DISTINCT gid
FROM `gd`
WHERE COUNT(*) > 10
ORDER BY lastupdated DESC

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

لحسن الحظ، توفر MySQL حلاً أكثر تحسينًا باستخدام عبارات GROUP BY وHAVING:

SELECT gid
FROM `gd`
GROUP BY gid 
HAVING COUNT(*) > 10
ORDER BY lastupdated DESC

ينفذ هذا الاستعلام الخطوات التالية:

  1. تجميع الصفوف في جدول gd حسب عمود gid.
  2. حساب عدد الصفوف لـ كل مجموعة gid تستخدم الدالة COUNT(*).
  3. يستخدم جملة HAVING لتصفية النتائج وإرجاع فقط تلك المجموعات التي تحتوي على عدد أكبر من 10.
  4. يفرز النتيجة النهائية بترتيب تنازلي استنادًا إلى العمود الذي تم تحديثه مؤخرًا.

من خلال الاستفادة من عبارات GROUP BY وHAVING، يحقق هذا النهج النتيجة المرجوة بشكل فعال دون اللجوء إلى عبارة SELECT المتداخلة، مما يؤدي إلى تحسين الأداء والكفاءة.

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

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

Copyright© 2022 湘ICP备2022001581号-3