2013-05-22 3 views
4

이것은 매우 기본적인 질문 일 수 있지만 행 범위만을 기반으로하는 테이블의 특정 행을 queying하는 데 어려움을 겪고 있습니다.테이블 행 범위에 대한 mysql 쿼리

내가 1000 개의 행을 채운 테이블 ABC가 있다고 가정 해 보겠습니다. 이제는 모든 행을 다 끝낼 때까지 처음 100 행 (즉, 범위 1에서 100까지)을 가져온 다음 다음 100 (101에서 200까지)을 가져올 수 있도록 SQL 쿼리를 원합니다. 그리고이 작업은 테이블의 id 나 컬럼 id에 대한 질의/필터링없이 수행되어야합니다. 내가 사람 만이 PLZ 당신은 SELECT 쿼리에서 LIMIT 절을 사용해야합니다

+0

100 개의 의사 랜덤 행을 쿼리하려면 'SELECT * FROM Table1 LIMIT 100'을 쿼리하십시오. 당신이 그것들을 결정 론적으로 원한다면, 당신은 또한 무엇인가를 주문할 필요가 있습니다. –

+0

감사합니다.하지만이 세미 임의의 것은 무엇입니까? 그리고 다음 쿼리의 시작 행을 어떻게 추적합니까? – Shyam

+0

아무 것도 주문하지 않으면 행은 순서에 관계없이 질의마다 다른 순서로 올 수 있습니다. 특정 오프셋에서 시작하도록 LIMIT에 두 번째 매개 변수를 지정할 수 있습니다.이 매개 변수는 설명서에서 찾아 볼 수 있습니다. –

답변

6

를 도울 수 있다면 절은 이렇게 감사하겠습니다 WHERE 특정 열을 쿼리에 대한 교육을하고 같은

나는 그것을 알아낼 수 없습니다입니다. MySQL에서는 절, 오프셋 (첫 번째 매개 변수) 및 페치 할 행 수 (두 번째 매개 변수)의 두 매개 변수를 설정할 수 있습니다.

SELECT * FROM `ABC` LIMIT 0, 100 
SELECT * FROM `ABC` LIMIT 100, 100 
SELECT * FROM `ABC` LIMIT 200, 100 
-- etc... 

그러나, 당신은 당신이하지 않는 정렬 ORDER BY 절을 사용하여 하나 이상의 특정 열 (들)에 의해 이러한 행의 순서를 보장 할 수 없습니다.

여기 SELECT 문에 대한 자세한 읽기 : http://dev.mysql.com/doc/refman/5.6/en/select.html

3

당신은 MySQL의에서 제한를 사용할 수 있습니다.

한계 허용 2 매개 변수.

이렇게하면 1-10 개의 레코드가 반환됩니다.

select * from abcd limit 10 

이것은 10-20 개의 레코드를 반환합니다.

select * from abcd limit 10,10 

이것은 20-30 개의 레코드를 반환합니다.

select * from abcd limit 20,10 
+0

"20-30 레코드"(25 +/5 세미 무작위로 선택된 레코드)와 "레코드 20-30"(20 레코드가 11 개 레코드 사이에 큰 차이가 있습니다 ~ 30 포함) – WBT