sql - 查找与 mysql 中的一个特定帖子的标签相关的帖子

标签 sql mysql tags many-to-many

我有这个表:帖子(post_is,标题和文本),标签(tag_id,标签),Post_tag_nn(id,tag_id,post_id)。我想要一个特定的帖子,例如有 4 个标签,所有带有这些标签的帖子,然后是带有任意三个标签的所有帖子,然后是带有任意两个标签的所有帖子,依此类推。我如何为此目的构建一个 SQL 查询(在 php 中,这似乎是一个回溯问题=给定集合的所有子集)。

最佳答案

有一个查询来查找当前帖子的标签,例如

SELECT tag_id
FROM Post_tag_nn
WHERE post_id = $post_id;

然后使用这些标签 ID,此查询应返回具有 4,3,2,... 匹配标签的帖子 ID:

SELECT post_id, COUNT(post_id) AS tag_count
FROM Post_tag_nn
WHERE tag_id IN ($array_of_tag_ids)
GROUP BY post_id
ORDER BY tag_count DESC;

关于sql - 查找与 mysql 中的一个特定帖子的标签相关的帖子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1216099/

相关文章:

SQL 2005 - 查询查找行数最多的表

mysql - 根据外键的子字符串连接两个表(MS SQL 2005)

mysql - 如何使用条件连接优化查询?

mysql - sql select语句,正确select语句指南

php - 如何从表中正确获取和输出数据,并使用 mysqli_real_escape_string 插入

php - mysql转mysqli函数困难

php - 使用事件记录根据其他表中包含与外键相同的 id 的每个 id 计算行数

php - 从最近 5 个帖子中选择所有标签分配

ruby-on-rails - 根据上下文返回所有标签 - ActsAsTaggableOn

php - 在 PHP 中,如何从 html 标签中删除特定类?