我正在编写代码,根据给定视频中的一些标签,返回具有相似标签的其他视频。它有效,但我正在尝试随机化结果..所以我搜索并发现这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 个具有相似标签的随机视频时,我尝试的所有操作都会出现语法错误。
关于如何将它们组合在一起的任何建议?