MySQL有很多匹配的地方?

Ben*_*Ben 1 php mysql sql many-to-many

那么这个对我来说是一个头脑风暴.我有一个带标签的帖子系统.标签与帖子有很多很多关系.

问题是我想根据他们与当前标签匹配的标签数来选择其他帖子.

一个快速的视觉示例:

PostA: TagA, TagB
PostB: TagC
PostC: TagA
PostD: TagA, TagB
Run Code Online (Sandbox Code Playgroud)

所以,如果我输入PostA,它会给我PostD,PostC.

我真的甚至不知道从哪一个开始,我希望有人比我遇到这个问题更聪明,可以提供一些帮助.

Nei*_*eil 5

好的,假设你的标记帖子表实际上是这样的:

PostA   TagA
PostA   TagB
PostB   TagC
PostC   TagA
PostD   TagA
PostD   TagB
Run Code Online (Sandbox Code Playgroud)

那你想要的

SELECT post FROM tagged_posts
  WHERE post != 'PostA'
  AND tag in (SELECT tag FROM tagged_posts WHERE post = 'PostA')
  GROUP BY post
  ORDER BY COUNT(*) desc
Run Code Online (Sandbox Code Playgroud)