이전 레코드를 기반으로 한 번에 하나의 레코드를 얻을 수있는 포럼 순위 시스템을 시도하고 있습니다.순위 및 이전에 선택한 행을 기준으로 행 선택
예제 테이블이다 : 나는 간단한 쿼리 ORDER BY POST_REPLIES DESC
을 할 경우
| POST_ID | POST_REPLIES | -------------------------- | 1 | 5 | | 2 | 2 | | 3 | 8 | | 4 | 8 | | 5 | 12 | --------------------------
, 나는 POST_ID 5, 4, 3, 1, 2
를 얻을.
하지만 내가하고 싶은 것은 다음 행 (한 번에 하나의 행) 만 얻고 현재 게시물에 기반합니다.
예를 들면 : 나는 현재 포스트 # 3를보고하고있는 경우, 버튼은 #을 게시 가리 것이다 나는 현재 문제가 중복 다루는 데 4
등 '대부분의 응답과 다음 게시물'가 표시된다 나는 3에서 4 사이의 루프를 실행한다. (3 점에서 4 점, 4 점에서 3 점으로)
나는 그 자체를 테이블에 조인하고 어느 것이 더 크거나 작 았는지 비교하기 위해 놀았다. , 그러나 나는 1의 한계를 사용하고 있기 때문에, 행은 항상 1이므로 쓸모가 없다. 기본 쿼리는 다음과 같습니다.
SELECT * FROM posts
WHERE post_id != '$currentPost'
ORDER BY POST_REPLIES DESC, POST_ID DESC LIMIT 1
어떻게하면됩니까? 예
limit 0,1
제로 시작 기록이다
하나의 범위를 사용
그룹 대신 하나의 회신을 받으려고합니까? –
맞습니다. 현재 보시는 바로 다음에 '인기있는'게시물을 얻으려고합니다. – Bill
알고 싶은 모든 사람들을 위해, 나는 4 시간마다 cron에 의해 업데이트 된 별도의 순위표를 작성하고, 생성 된 순위 #를 사용하여 다음 그림으로 이전으로 이동합니다. 이전에 내가했던 단 하나의 쿼리는 SQL에 대한 나의 짧은 경험으로 인해 너무 많은 서브 쿼리를 사용했습니다. 내가 가지고있는 쿼리는 mattedgod와 newtovers가 혼합 된 솔루션 이었지만, 실행하는데 약 2 ~ 3 초가 걸렸다. – Bill