2017-02-09 1 views
0

세트, 리턴 100752 (있는 경우). 그러나 나는 완전히 다른 기록, 즉 얻을 : enter image description hereMySQL의 LIMIT는 incorect 행

내가 기록을 내가 쿼리를 다시 실행 그래서 존재 확인, 내가 알고있는 기록이 시간이 거기 예 :

SELECT idx, date_added FROM my_table ORDER BY idx ASC LIMIT 102366, 10 

아직 I 다음과 같은 일치하지 않는 행을 다시 얻으십시오.

enter image description here

나는 아마 어리석은 일을하고 있어요 알고있다. 도움말 감사.

편집/업데이트 : 다음 제안 사항 중 일부를 수행하고 LIMIT 기능 대신 특정 WHERE 조건을 사용하여 결과를 테스트했습니다. 아래 결과를 참조하십시오. 두 쿼리 모두 동일한 결과를 반환해야합니다.

TEST 1 :

SELECT idx, date_added FROM attachments ORDER BY idx ASC LIMIT 67805, 20 

반환 : enter image description here

TEST 2 :

SELECT 
    idx, date_added 
FROM attachments 
WHERE 
    idx >=67805 and idx <67825 
ORDER BY idx ASC 

반환 : enter image description here

나는 둘 다 똑같을 것으로 기대하지만 이것은 사실이 아닙니다.

해결 방법 : LIMIT는 기본 자동 증가 키를 고려하지 않습니다. idx가 SORTed 인 경우에도 행 수에 관계 없습니다 (일부 인덱스가 누락 된 경우). 삭제 된 행 수에 따라 결과가 오프셋됩니다. 모두들.

+0

실행 :'최대 (IDX)는, attachments'에서 (*) 계산 결과 – RIKI

+0

@OTARIKI 예를 들으 참조 선택하고 그 아무 것도 반환하지 않습니다! WTH? – Milan

+0

@ 구르병 당신은 심각한가요? – Milan

답변

1

LIMIT의 첫 번째 인수는 상쇄됩니다. 테이블의 어떤 열과도 관련이 없습니다.

당신이 (당신이 다음 행을 삽입 오히려 그것은 당신의 테이블을 주문 후 29 행에 20을 줄 것이다 ID 20 29에 당신에게 제공하지 않습니다 LIMIT 20, 10 다음 사이에 행에 무작위로 일부 행을 삭제 테이블이있는 경우 삭제 된 행이 여기에서 역할을하지 않음)

편집 : ORDER BY이없는 경우 순서는 임의 일 수 있습니다. https://stackoverflow.com/a/20050403/1435132

+0

삭제 된 행은 역할을한다. 일부 행을 삭제하고 MySQL이 여유 공간을 다시 사용하는 새로운 행을 추가했습니다. 그래서 만약 당신이 명령없이이 새로운 레코드가 결과의 끝이 아닐 가능성을 선택한다면 –

+0

예, 'ORDER BY'가 없다면 순서는 임의적 일 수 있습니다. http://stackoverflow.com/a/20050403/1435132 – Sangharsh

+0

.. 죄송합니다. 그러나 이것이 내 질문에 어떻게 대답하고 있는지 이해할 수 없습니다. a) 나의 쿼리는 ORDER BY를 가지고 있고, b) 당신은 분명히 당신의 이론이 여기 남아 있지 않도록 이전 equerry에서 행렬을 볼 수 있습니다. – Milan

1

idx 열에 틈이있을 수 있습니다. 즉, idx의 일부 값이 한 번 사용되었지만 테이블에 더 이상 존재하지 않습니다.이와 같이 행 번호는 idx과 동일하지 않습니다 (행 번호가 idx이 아닌 LIMIT offset, row_count).

대신이 쿼리를 사용하지 마십시오.

SELECT 
    idx, date_added 
FROM my_table 
WHERE 
    idx >=100752 and idx <100762 
ORDER BY idx ASC 
+1

예, 대체 쿼리 솔루션을 이용해 주셔서 감사합니다. 확실히 결과를 얻는 방법은 여러 가지가 있습니다. 그러나 저는 LIMIT 기능으로 wth가 진행되고 있음을 알고 싶습니다. OTARIKI에 대한 내 의견을 참조하십시오. 문제를 명확히하는 데 도움이 될 수 있습니다. – Milan