MySQL Query根据类似标签的数量进行排名

时间:2014-06-04 20:40:13

标签: php mysql sql

我希望有比我更高级的MySQL知识的人帮助指导我如何做以下事。

假设我有表#1,视频:

Video ID
Video Name etc

我也有表#2,标签

Tag ID
Tag Name

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

ID (primary and autoincremented)
Tag ID
Video ID

现在我可以找到类似的视频(基于排名有多少视频共享最多的标签数量),使用上面结合PHP,但这涉及一些查询,我觉得可以做到通过单独的mysql查询更优雅。我想查看视频,根据彼此共有的标签数量找到最相似的视频。

感谢任何帮助!

1 个答案:

答案 0 :(得分:3)

让我们说视频是" 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