안녕하세요 MySQL 쿼리에 대해 질문이 있어 글을 올립니다. 쿼리를 게시판 리스트 형식으로 던지게 되는데, 쿼리는 아래와 같습니다.
1page
select * from table_name where ~~~~ order by DueDate limit 0,15;
2page
select * from table_name where ~~~~ order by DueDate limit 15,15;
각 페이지에 대해 15개씩 끊어서 보여주는 쿼리이며, mysql의 limit
를 이용하는중인데,
문제는 1페이지에 나왔던 레코드가 2페이지에 또 나오는 현상이 발생합니다.(where
와 limit
조건을 제외하면 1건이 확실합니다.)
order by에 걸리는 DueDate
필드가 PK나 인덱스같은 유일성을 가진 필드가 아니라서 이런 현상이 발생한다고 생각하여
order by DueDate, tableid
로 PK도 같이 조건절에 주었는데 이렇게 수정했을경우 정상입니다.
유일성을 가지지 않은 필드가 order by 조건에 걸릴 경우 이런 문제가 발생하나요?