2010-04-15 4 views
2

SQLite에서 Table을 단계적으로 실행하는 기능을 구현하거나 사용하고 싶습니다.SQLite 테이블을 걷기

테이블 Products에 100k 개의 행이있는 경우 한 번에 10k 개의 행을 검색하고 싶습니다. 웹 페이지가 데이터를 나열하는 방법과 비슷하고 < Previous .. Next > 링크가있어 데이터를 탐색 할 수 있습니다.

이 간단한 것을 만들 수있는 선택 진술이 있습니까? 데이터를 정렬하지 않으면 ok로 보이는 LIMIT와 함께 ROWID를 사용해 보았습니다.

// 주문하지 않으면 작동합니다.

SELECT * FROM Products WHERE ROWID BETWEEN x AND y; 
+0

행을 주문하면 어떻게됩니까? –

+0

ROWID가 명시 적으로 지정되지 않은 경우에도 ROWID는 여전히 사용할 수 있지만 정적 인 것은 아닙니다. 즉, 암시 적 ROWID는 행이 테이블에 실제로 쓰여지는 순서에 따라 결정됩니다. 그래서 테이블이 Name에 의해 순서대로 저장되어 있고 QTY로 주문하고 싶다면 ROWID는 반환 된 순서를 나타내지 않고 암시 적 행 번호를 나타냅니다. – galford13x

+0

SQL 작업에서 가능한 한 내장 ROWID를 사용하지 않아야합니다. 실제로 SQL 표준의 일부는 아니며 대부분의 RDBMS에있을 수있는 추가 기능입니다. 대신 ORDER BY 절을 사용하여 순서를 생성합니다. 대부분의 쿼리는 암시적인 행 번호에 의존하지 않고 작성할 수 있다는 것을 알았습니다. 약간의 상상력이 필요했습니다. –

답변

3

offset and limit을 찾고 계십니까? SQLite는 이것을 지원합니다. 그런 다음 order by을 사용할 수 있으며 SQLite도 지원합니다.

편집 :

Select * from Products order by name limit 10000 offset 10000;

이 이름순으로 정렬 된 테이블에서 두 번째 10,000 페이지를 가져 :
당신이 뭔가를 할 수있는, 정교합니다. 한계/오프셋 및 주문 처리시 성능 문제에주의하십시오.

+0

코드에서이 쿼리를 사용하고 전달 된 값을 필요한 레코드 청크 당 10k 씩 증가하는 매개 변수 값의 오프셋으로 만듭니다. –

+0

이것이 내가 찾던 바로 그 것이다. – galford13x

+0

내 오류 양을 고쳐 주셔서 감사합니다. –

관련 문제