GROUP BY 쿼리로 행 수 가져 오기
효과에 대한 질문이 있습니다.
SELECT t3.id, a,bunch,of,other,stuff FROM t1, t2, t3
WHERE (associate t1,t2, and t3 with each other)
GROUP BY t3.id
LIMIT 10,20
이 쿼리가 LIMIT없이 반환되는 많은 총 행을 알고 싶습니다 (따라서 페이지 매김 정보를 표시 할 수 있음).
일반적으로 다음 쿼리를 사용합니다.
SELECT COUNT(t3.id) FROM t1, t2, t3
WHERE (associate t1,t2, and t3 with each other)
GROUP BY t3.id
그러나 GROUP BY는 COUNT의 의미를 변경하고 대신 각 그룹의 고유 한 t3.id 값 수를 나타내는 행 집합을 얻습니다.
GROUP BY를 사용할 때 총 행 수를 계산하는 방법이 있습니까? 값이 페이지가 매겨져 있기 때문에 행의 하위 집합 만 필요하기 때문에 전체 쿼리를 실행하고 행 수만 계산하는 것을 피하고 싶습니다. 나는 MySQL 5를 사용하고 있지만 이것은 꽤 일반적이라고 생각합니다.
MySQL에는 좋은 솔루션이 있습니다.
키워드 SELECT 바로 뒤에 SQL_CALC_FOUND_ROWS 키워드를 추가합니다.
SELECT SQL_CALC_FOUND_ROWS t3.id, a,bunch,of,other,stuff FROM t1, t2, t3
WHERE (associate t1,t2, and t3 with each other)
GROUP BY t3.id
LIMIT 10,20
그런 다음 FOUND_ROWS () 함수를 사용하여 다른 쿼리를 실행합니다.
SELECT FOUND_ROWS();
LIMIT 절이없는 행 수를 반환해야합니다.
자세한 내용은이 페이지를 확인하십시오. http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_found-rows
"다른 것들의 무리"는 모두 집합체입니까? GROUP BY에는 t3.id 만 있기 때문에 그렇게 가정합니다. 이 경우 작동합니다.
SELECT
COUNT(DISTINCT t3.id)
FROM...
물론 다른 옵션은 다음과 같습니다.
SELECT
COUNT(*)
FROM
(
<Your query here>
) AS SQ
저는 MySQL을 사용하지 않으므로 이러한 쿼리가 거기에서 작동하는지 여부를 모르겠습니다.
하위 쿼리 사용 :
SELECT COUNT(*) FROM
(
SELECT t3.id, a,bunch,of,other,stuff FROM t1, t2, t3
WHERE (associate t1,t2, and t3 with each other)
GROUP BY t3.id
)
as temp;
그래서 temp는 행의 수를 포함합니다.
MySQL을 사용하고 있으므로 해당 기능을 사용하여 정확하게 수행 할 수 있습니다.
SELECT SQL_CALC_FOUND_ROWS t3.id, a,bunch,of,other,stuff
FROM t1, t2, t3
WHERE (associate t1,t2, and t3 with each other)
GROUP BY t3.id
LIMIT 10,20;
SELECT FOUND_ROWS(); -- for most recent query
http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_found-rows
주어진 모든 ans는 쿼리를 실행 한 다음 개수를 찾습니다. Distinct는 대규모 데이터 세트에서 그룹 별보다 확실히 느립니다.
Best way to find the count of group by is below
SELECT
sum(1) as counttotal
FROM (
Your query with group by operator
) as T
This will find the count while calculating group by.
ReferenceURL : https://stackoverflow.com/questions/364825/getting-the-number-of-rows-with-a-group-by-query
'code' 카테고리의 다른 글
스택리스 C ++ 20 코 루틴이 문제입니까? (0) | 2020.12.30 |
---|---|
log4j에서 오래된 회전 로그 파일을 삭제하려면 어떻게해야합니까? (0) | 2020.12.30 |
google.setOnLoadCallback with jQuery $ (document) .ready (), 혼합해도 되나요? (0) | 2020.12.29 |
위임, 구성 및 집계 구분 (Java OO 디자인) (0) | 2020.12.29 |
문자열에 마침표 (0) | 2020.12.29 |