2012-04-14 6 views
0

내 데이터베이스에 5000 개의 행이 있다고 가정 해 보겠습니다. 결과를 페이지 매기기를 원하지만 모든 5000 행이 아니라 마지막 1000 행까지 페이지 매기기를 원합니다. 어떻게 그럴 수 있습니까?MySQL - 특정 수의 행을 매김하는 방법?

SELECT SQL_CALC_FOUND_ROWS * FROM table LIMIT 0,25 

그러나이 쿼리는 모든 5000 개의 결과를 가져옵니다. 난 그냥 최신 1000 결과를 잡고 그 페이지 매김 싶어요. 어떻게하면 좋을까요? 기본 키인 자동 증분 인 ID 필드가 있습니다. 그게 도움이 될지 모르겠다. 이 같은

답변

1

당신이 연속적으로 이러한 쿼리를 호출하는 데 필요한 페이지 매기기에 SQL을 사용하려면 :

SELECT SQL_CALC_FOUND_ROWS * FROM table LIMIT 1000,25 
SELECT SQL_CALC_FOUND_ROWS * FROM table LIMIT 1025,25 
SELECT SQL_CALC_FOUND_ROWS * FROM table LIMIT 1050,25 
... 
... 

다른 말로하면

SELECT SQL_CALC_FOUND_ROWS * FROM table LIMIT <offset>,<pageSize> 
0

시도 뭔가 :

SELECT * FROM table WHERE id > ((SELECT MAX(id) FROM table) - 1000); 

또는이 하나

SELECT * FROM (SELECT * FROM table ORDER BY id DESC LIMIT 1000) AS ttbl ORDER BY 
                       id ASC; 
+1

ID에 간격이있는 경우 첫 번째 행이 반환 될 것으로 보장하지 않으므로 두 번째 방법이 더 좋습니다. –

관련 문제