2011-02-25 5 views
1

나는 그러나 다음MySQL의 FOUND_ROWS 및 총 행

n = 10 
SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name 
WHERE id > 100 LIMIT n, 20; 
SELECT FOUND_ROWS(); 

을하고있어, n은 사용자에 의해 설정됩니다. n이 쿼리를 두 번 실행하지 않고 총 행 수를 초과하지 않는다는 것을 알 수있는 방법이 있습니까?

답변

0

두 가지 쿼리를 실행하지 않고 어떻게 목표를 달성 할 수 있는지는 알 수 없습니다. 다른 쿼리를 실행하여 반환 할 결과 수를 계산 한 다음 해당 값을 사용자 값과 비교하여 확인할 수 있습니다.

+0

그래, 그게 내가 생각한거야. – JeffTun

0

일반적으로 SQL 지식은 거의 없지만 도움을 제공 할 것입니다.

경계를 초과하면 어떻게됩니까? 마지막 20 개를 선택 하시겠습니까? 나는 잘 모르겠다. MySQL 레퍼런스에서 보았던 것에서 LIMIT x, y는 반환 된 x 번째 값에서 시작하여 y 레코드 (x와 y-1 레코드 다음)를 반환한다는 것을 의미합니다. 그래서 당신은 n이 당신의 카운트보다 크지 않은지 확인하고 확인해야 할 것 같습니다 -

DECLARE @blah INT; 

IF (n <= (SELECT Count(*) FROM tbl_name) - 20) THEN SET @blah = n; 
ELSE SET @blah = (SELECT Count(*) FROM tbl_name) - 20; 


SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name WHERE id > 100 LIMIT @blah, 20; 
    SELECT FOUND_ROWS(); 

END IF