2010-02-04 2 views
4

시나리오 : Visual FoxPro 데이터베이스에서 정보를 가져와야합니다. 그러나 이에 대해 큰 쿼리를 실행하면 시스템을 잠그는 경향이 있습니다. 이를 해결하기 위해 쿼리가 특정 시간이 지나면 실행을 취소 한 쿼리를 취소하고 반환 할 행 수를 제한하는 제한을 설정합니다.SQL - 제한된 수의 행을 반환하지만 전체 행 수

"SELECT TOP ###"을 사용하여 쿼리 할 수있는 방법이 있습니까? 또한 명령문에서 찾은 행의 실제 수를 반환합니까? 아니면 쿼리를 두 번 실행할 수있는 유일한 방법입니까? (이유는 아직 쿼리를 실행할 수 있지만 사용자에게 상황이 무엇인지 알려주는 것입니다. 즉, "### found items of ### found found items").

첫 번째 평가판은 명세서의 선택 부분에 단순히 "COUNT (*)"를 추가하는 것이었지만, 찾고 있던 것을 성취하지 못했습니다 (정확한 수의 행을 반환했지만 나머지 데이터는 한 행을 반환했습니다).

+0

이 중단 된 FOXPRO되지 않았습니다? –

+0

Visual FoxPro 9 SP2는 2014 년까지 Microsoft에서 지원할 예정입니다. –

답변

2

내가 제대로 질문을 이해한다면, 당신은 하위 선택을 할 수 있지만, 당신이 모든 행에 대한 카운트 SQL 문의 의미합니다 반환 : 여분의 열이 당신에게 10 행을 줄 것이다

select top 10 field1, field2, (select count(*) from table) as totalrows from table 

각각의 호출 된 totalrows에는 테이블의 모든 행 수를 포함합니다.

개인적으로는 별개의 쿼리를 실행하여 상단을 얻으려고합니다. n 행과 개수.

+0

그게 제가 생각한 것입니다. 단 하나의 쿼리에서이 작업을 수행하기를 희망했습니다. – John

+0

@myRowsCount = Select와 같이 분리 된 변수에서 선택하는 방법은 어떻습니까? 테이블 에서 COUNT (*)를 입력 한 다음 다음과 같은 쿼리에 넣습니다. 테이블에서 totalrows로 상위 10 개 field1, field2, @myRowsCount를 선택하십시오. –

2

2 개의 별도 SELECT를 실행해야합니다. 하나는 쿼리에서 반환 된 행 수를 검색하고 특정 페이지에 대한 레코드의 하위 집합을 반환합니다.

당신은 최초의 "페이지"검색 할 때 한 번만 총 COUNT를 검색하여이를 최적화 할 수있다 (즉, 다음 페이지의 전체 수를하지 않는다)

관련 문제