2012-12-15 12 views
0

9 개 기록MySQL, 반환되는 행의 수를 쿼리에서 (누가 LIMIT을 사용하는지) 얻고 행 집합을 저장합니다. (저장 프로 시저/기능) 및 행 집합 문 번호로 예를 표 x에 대한

X =

5 나는 쿼리합니다

Select * From `x` LIMIT 0,5 

// 나는이 데이터를 필요 쿼리 및 행 집합 수.

// 변수 수는 - 첫 번째 쿼리에 의해 반환되는 행의 수,

첫 번째 쿼리 행 집합은 다음

5 행보다 작은 내가 테이블 Z에서 새 쿼리를 만들을 저장

Select * From `z` Limit 0,(5 - count) 

    -------------------------------- 

트릭으로 FOUND_ROWS가 작동하지 않습니다.

http://pastebin.com/1kKD0wqC

-------------------------------- 

문제 :

어떻게 저장 프로 시저/기능 (MySQL을)에 그것을 할?

하나의 쿼리에서 첫 번째 쿼리 (행 집합과 반환 된 행 수)는 어떻게 달라 집니까?

-------------------------------- 

대상 : 일 함수 후

는 행 집합의

합계 반환해야합니다 (질의 1, 2). 작동하지만 sholud 경우

답변

0

I가 발견 된 솔루션 :

MySQL을 (저장 프로 시저의 내용) :

Set @tmp = 0; 
Select `field_1`, `field_2` From `table_1` Where @tmp := @tmp + 1 LIMIT 0 ,5; 

을 // 우리는 행 설정하고 세션 변수 (@tmp)에서 - 반환 된 행


@TIP

@tmp := @tmp + 1 

어디서나 모든 조건이 충족되어야합니다. 예를 들어

:

[.....] Where @tmp := @tmp + 1 And `field_2` > 1 LIMIT 0, 5; 

는 항상 1을 반환합니다 ...


올바른 버전

[.....] Where `field_2` > 1 And [Other conditions] And @tmp := @tmp + 1 LIMIT 0, 5; 
0
Select * From `z` Limit 0,(5 - (SELECT COUNT(*) FROM `x` LIMIT 0,5)) 

또는

행 집합 쿼리 (1)는 확인하지 않았다. 나는 설명서를 참조하십시오 : http://dev.mysql.com/doc/refman/5.0/en/subqueries.html

+0

이 변형은 나에게 첫 번째 쿼리 행 집합 및 두 번째 쿼리 행 집합 –

+0

의 합계를 제공하지 http://dev.mysql.com/doc/refman/5.1/ en/counting-rows.html이 같은 것을 의미합니까? – Dharman

+0

http://pastebin.com/0UePTBbm 아니야. 필요 (3 줄 (0.00 초) 세트) 및 행 집합 :) –