본문 바로가기
MySql

MySQL GROUP BY 쿼리로 행 수 얻기

by 베이스 공부 2020. 11. 8.
반응형

효과에 대한 질문이 있습니다.

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 절이없는 행 수를 반환해야합니다.


 

참조 페이지 https://stackoverflow.com/questions/364825

 

 

반응형

댓글