«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как фильтровать данные на основе количества в MySQL без использования вложенного SELECT?

Как фильтровать данные на основе количества в MySQL без использования вложенного SELECT?

Опубликовано 14 ноября 2024 г.
Просматривать:552

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. Чтобы обойти это ограничение, пользователь изучил возможность использования вложенного SELECT для подсчета количества строк для каждого уникального gid и последующей соответствующей фильтрации результатов. Однако этот метод был признан неэффективным и ресурсоемким.

К счастью, 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