2012-08-09 1 views
0

아이폰 앱에 대한 인기 급상승 동영상을 만들고,보기 테이블에서 최근 24 시간 동안의 동영상에있는 모든보기를 계산 중입니다.보기가있을 때마다 행이 추가되고 타임 스탬프가 있습니다. 및 videoid). 무한 스크롤을 할 때 마지막 비디오 뷰 수를 다시 보내고 mySQL에서 HAVING 문을 사용하여 다음 비디오를 가져옵니다.certin ID mySQL 쿼리 후 다음 10 배치 정보를 얻으시겠습니까?

"HAVING COUNT(views.videoid) < 'count of views'" with a "LIMIT 10" 마지막에 10을 선택하십시오.

동영상의 조회수가 지난 24 시간 동안 다른 동영상의 조회수와 동일한 경우이 동영상은 < 문이므로 건너 뛸 수 있습니다. 그리고 내가 < = 문장 동영상을 여러 번 표시합니다.

I 라인의 다음 비디오를 얻기 위해

"ORDER BY COUNT(views.videoid) DESC" 

후 동영상 ID 후 비디오를 선택할 수있는 방법이 있나요? 아마 아니지만 누가 그 일을 어떻게 할 것인지 알 수 있습니다. 여기 내 쿼리입니다.

SELECT f.userid, f.username, video.videoid, video.videolink, video.timestamp, video.caption, video.tags, video.address, video.likecount, video.commentcount, video.viewcount, video.shareid, CASE WHEN liketable.likekey > 0 THEN 1 ELSE 0 END AS didlike, COUNT(views.videoid) AS trendcount 

FROM user AS f 

RIGHT JOIN video ON video.userid = f.userid 

LEFT JOIN user ON user.token = ? 

LEFT JOIN liketable ON liketable.videoid = video.videoid AND liketable.userid = user.userid 

RIGHT JOIN views ON views.videoid = video.videoid 

WHERE views.timestamp > ? 

GROUP BY video.videoid 

HAVING COUNT(views.videoid) < ? 

ORDER BY COUNT(views.videoid) DESC 

LIMIT 10 

답변

1

당신은 LIMIT와 오프셋을 사용할 수 있습니다

SELECT [...] LIMIT 20,10; 

이 결과에 행 (20)에서 시작, 10 개 행을 검색합니다.

ORDER BY를 개수 및 비디오 ID별로 정렬하도록 설정하면 항상 동일한 순서로 결과를 얻을 수 있으므로 건너 뛰지 않아야합니다.

관련 문제