2014-06-13 2 views
1

쿼리 결과를 처음 1,000 개로 제한하는 MS Access 2010의 구문은 무엇입니까?Access 2010 제한 쿼리 결과

는 나는이

SELECT tblGL.[Cost Centre Code] 
FROM tblGL 
LIMIT 1000; 

시도했다하지만 난 'FROM 절에 구문 오류'은 오류가 발생합니다.

최대 레코드 속성 설정도 시도했지만 아무 것도하지 않는 것 같습니다. 최대 레코드 필드에 어떤 값을 입력했는지에 관계없이 여전히 7,000+ 결과를 얻습니다.

또한 1,001 번째부터 다음 25,000을 선택하는 두 번째 쿼리가 필요합니다.

SELECT tblGL.[Cost Centre Code] 
FROM tblGL 
LIMIT 1001, 25000; 

답변

1

: LIMIT 1001 , 25000 (즉, 1,001 번째부터 25,000 개의 결과가 반환됩니까?)

불행히도 MS Access에서는 MySQL과 같이 간단하지 않습니다.
Access에서 중첩 된 하위 쿼리를 사용해야합니다. 여기

'나는 C#에서 페이징에 대한 올바른 SQL 문자열을 구축하는 방법을 보여주는거야 내 대답 : 것입니다 테이블 이름과 열 이름을 그 대답에서 SQL 문자열을 복용하고 삽입
How to do MS Access database paging + search?

이 쿼리 결과 :

select [Cost Centre Code] from tblGL 
where [Cost Centre Code] in (
    select top 25000 sub.[Cost Centre Code] 
    from (
     select top 26000 tab.[Cost Centre Code] 
     from tblGL tab 
     where 1=1 
     order by tab.[Cost Centre Code] 
    ) sub 
    order by sub.[Cost Centre Code] desc 
) 
order by [Cost Centre Code] 

이 적어도 기본 C#을 지식에 대한 필요가 없습니다,하지만 당신은 여전히 ​​당신이 하위 쿼리가

:-) 작동 방법을 모르는 경우 혼동 될 것 같아요을

문제는 다음과 같습니다.
액세스에는 25000 개의 행을 직접 가져 오는 기본 제공 방법이 없지만 처음 1000은 건너 뜁니다.
가능한 유일한 것은 첫 번째 X 행을 얻는 것입니다.

그래서 내가하고있어이 (내부에서 외부로) :

  1. 로드 첫 26000
    + 25000 (1000, 우리는 1000 개 행을 건너 뛸 원하기 때문에 로드 25000)

  2. 이 데이터 세트에서 처음 25000 행을로드하지만 내림차순입니다.
    이렇게하면 실제로 행 26000 - 1001 이로드됩니다 (행 순서가 내려 가기 때문에 순서대로)!)

  3. 는)! 바로 다시 (및 주문 상승 테이블에서로드을 오름차순으로 행을 얻으려면, 그러나 2 단계

에서 Cost Centre Codes 만 행이 알았어요 ?
예, 처음에는 두려운 것처럼 보입니다.하지만 하위 쿼리를 "얻는 즉시"실제로 그렇게 어렵지는 않습니다.

+0

감사합니다. 귀하의 게시물을 한 번 보았는데 C#을 쓰지 않았거나 쿼리의 단점 (아마 후자!)으로 인해 그 이유를 알 수는 없지만 .................. – Dion

+0

@Dion : 잘 찍은 지점. 방금 내 대답을 편집하고, 내 링크에서 문자열을 가져 와서 테이블 및 열 이름에 적용했습니다. –

+0

기독교인. 나는 일할 수있어! 첫째, 쿼리에 고유 한 필드 (id)를 포함해야했습니다. 내 생각에 비 고유 코스트 센터 코드가 처음 1000 개의 레코드에서 발생하면 다음 25,000에서 제외됩니다. 실제로 도움을 주셔서 감사합니다! 추신. 답을 표결 한 사람은 제가 아니었지만 이제 +1을 추가 할 것입니다. – Dion

1

MySQL의 & SQLite는 사용 limit :처럼 뭔가. SQL 서버 & MS 액세스의 경우, 쿼리의 top X in the select portion를 사용해야합니다 :

select top 1000 tblGL.[Cost Centre Code] FROM tblGL 
+0

감사합니다. alroc. 그렇다면 MySQL에 대한 액세스는 무엇입니까? LIMIT 1001, 25000 (즉, 1,001 번째부터 시작하여 25,000 개의 결과 반환)? – Dion

+0

원본 질문에이를 포함 시키거나 새 질문을 게시해야합니다. 이 의견은 다르지만 관련있는 질문입니다. – alroc

+0

네가 맞아, 내가 그 질문을 수정할거야. – Dion

1

당신이 매개 변수를 사용하려면 다음의 MySQL의 액세스 상응하는 무엇

Select Top (@Rows) tblGL.[Cost Centre Code] FROM tblGL