我有这个表:Posts(post_is,title和text),Tags(tag_id,tag),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,。。。匹配标记:
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/

10-10 00:52
查看更多