ビデオからいくつかのタグを指定すると、同様のタグを持つ他のビデオを返すコードを書いています。それは機能しますが、結果をランダム化しようとしています..なので、検索してORDER BY RAND()
かなり遅くなることがわかりました。
しばらくして、この記事を見つけたので、自分のコードに合わせてみました。ランダムなビデオを返す私の試みは次のとおりです。
SELECT r1.id, name, site, siteid
FROM video AS r1 JOIN (
SELECT (RAND() * (SELECT MAX(id) FROM video)) AS id
) AS r2
WHERE r1.id >= r2.id
LIMIT 4
そして、これが同様のタグを持つビデオを見つけるための私のコードです:
SELECT v.name, v.site, v.siteid, v.id
FROM video v
JOIN video_tag vt ON vt.id_video = v.id
WHERE vt.id_tag IN ('1','2')
GROUP BY v.id
HAVING COUNT(DISTINCT vt.id_tag) = 2
ただし、それらをまとめて、同様のタグを持つ 4 つのランダムなビデオを取得しようとすると、すべての試行で構文エラーが発生します。
それらをまとめる方法に関する提案はありますか?