php - MySQL查询根据相似标签的数量进行排名

标签 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 查询更优雅。我想浏览这些视频,并根据它们彼此共有的标签数量找到最相似的视频。

感谢任何帮助!

最佳答案

假设视频是“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

关于php - MySQL查询根据相似标签的数量进行排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24047157/

相关文章:

PHP:在mysql中的时间戳值内拆分日期和时间

sql - 返回具有完全相同员工的所有组

java - 处理Android的SQLiteException

php - 我可以在不先选择数据库的情况下使用 Laravel 的 Schema::createDatabase() 吗?

php - 页面刷新后 Laravel 搜索功能崩溃

mysql - 手动导入/导出或转储数据库

php - 在 PHP 中返回 JSON 消息

mysql - 修剪第一个字符以匹配另一个值

javascript - PHP 重定向有什么缺点吗,因为似乎主要网站都选择使用 Javascript 重定向?

php - MySQL 查询中的多个 LIKE 比较? - MySQL, PHP