iPhoneアプリの動画のトレンドフィードを作成し、過去24時間の動画のすべての視聴回数を視聴回数テーブルで計算しています(視聴回数とタイムスタンプとビデオIDを持つたびに、視聴回数テーブルに行が追加されます)。無限スクロールを実行すると、最後のビデオビューのカウントが返され、mySQLのHAVINGステートメントを使用して次のビデオを取得します
"HAVING COUNT(views.videoid) < 'count of views'" with a "LIMIT 10"
最後に一度に10を選択します。
これは機能しますが、過去24時間に動画の再生回数が別の動画と同じである場合、その動画は<ステートメントであるためスキップされる可能性があります。また、<=ステートメントを使用すると、動画が複数回表示されます。
ビデオIDの後にビデオを選択する方法はありますか?
"ORDER BY COUNT(views.videoid) DESC"
次のビデオを並べるには?おそらくそうではありませんが、私がそれをどのように行うかを誰かが知っていますか。これが私の質問です。
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