我有这个表:帖子(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/