MySQL查询基于相似标签的数量进行排名


MySQL Query to rank based on number of similar tags

我希望有比我更先进的MySQL知识的人来帮助指导我如何做以下工作。

假设我有表#1,视频:

Video ID
Video Name etc

我也有表#2,标签

Tag ID
Tag Name

我有第三个表,将每个视频链接到一个或多个标签:

ID (primary and autoincremented)
Tag ID
Video ID

现在我能够找到类似的视频(基于排名有多少视频共享最大数量的标签作为一个)使用上面的PHP结合,但这涉及到一些查询,我觉得它可以通过mysql查询更优雅。我想浏览一下这些视频,根据它们彼此共有的标签数量找到最相似的。

任何帮助都是感激的!

假设视频为"Gravity", Gravity的VIDEO_ID为4321。

SELECT COUNT(res.TAG_ID), res.VIDEO_ID
FROM tag_link_table res
  INNER JOIN tag_link_table target
    ON target.VIDEO_ID = 4321 AND res.TAG_ID = target.TAG_ID
GROUP BY res.VIDEO_ID
ORDER BY COUNT(res.TAG_ID) DESC