"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Nested SELECT를 사용하지 않고 MySQL에서 개수를 기준으로 데이터를 필터링하는 방법은 무엇입니까?

Nested SELECT를 사용하지 않고 MySQL에서 개수를 기준으로 데이터를 필터링하는 방법은 무엇입니까?

2024년 11월 14일에 게시됨
검색:634

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

MySQL - WHERE 절에서 COUNT(*) 사용

사용자가 MySQL에서 COUNT(*) 함수를 사용하여 데이터를 필터링하려고 시도하는 동안 문제가 발생했습니다. WHERE 절. 중첩된 SELECT 문을 사용하지 않고도 이 작업을 수행할 수 있는 효율적인 방법을 모색했습니다. 이는 상당한 리소스를 소비할 수 있기 때문입니다.

사용자는 원하는 결과를 설명하기 위해 다음 의사 코드를 제시했습니다.

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

이 접근 방식의 문제점은 MySQL이 WHERE 절에서 COUNT(*)와 같은 집계 함수를 지원하지 않는다는 것입니다. 이 제한을 피하기 위해 사용자는 중첩된 SELECT를 사용하여 각 고유 gid에 대한 행 수를 계산한 다음 그에 따라 결과를 필터링하는 가능성을 탐색했습니다. 그러나 이 방법은 비효율적이고 리소스 집약적인 것으로 간주되었습니다.

다행히도 MySQL은 GROUP BY 및 HAVING 절을 사용하여 보다 최적화된 솔루션을 제공합니다.

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

이 쿼리는 다음 단계를 수행합니다.

  1. gid 열을 기준으로 gd 테이블의 행을 그룹화합니다.
  2. 다음의 행 수를 계산합니다. COUNT(*) 함수를 사용하여 각 gid 그룹.
  3. HAVING 절을 사용하여 결과를 필터링하고 개수가 10보다 큰 그룹만 반환합니다.
  4. 최종 결과를 내림차순으로 정렬합니다. 마지막 업데이트된 열을 기반으로 합니다.

GROUP BY 및 HAVING 절을 활용하는 이 접근 방식은 중첩된 SELECT 문을 사용하지 않고도 원하는 결과를 효과적으로 달성하여 성능과 효율성이 향상됩니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3