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