Пользователь столкнулся с проблемой при попытке отфильтровать данные в MySQL с помощью функции COUNT(*) в Пункт ГДЕ. Они искали эффективный метод выполнения этой задачи без использования вложенного оператора SELECT, поскольку он может потреблять значительные ресурсы.
Пользователь представил следующий псевдокод, чтобы проиллюстрировать желаемый результат:
SELECT DISTINCT gid FROM `gd` WHERE COUNT(*) > 10 ORDER BY lastupdated DESC
Проблема этого подхода заключается в том, что MySQL не поддерживает агрегатные функции, такие как COUNT(*), в предложении WHERE. Чтобы обойти это ограничение, пользователь изучил возможность использования вложенного SELECT для подсчета количества строк для каждого уникального gid и последующей соответствующей фильтрации результатов. Однако этот метод был признан неэффективным и ресурсоемким.
К счастью, 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