MySQL - 具有多对多关系的INNER JOIN查询

Nic*_*as. 3 php mysql sql select

我正在努力想要和JOIN一起工作,但是我被困在了某个地方.

我有两张桌子:

Post (postid,title) with values (1,'a'), (2,'b'),(3,'c'),(4,'d'),...
Filter (postid,reader) values (1,3),(1,2),(1,6),(1,10),(2,1),...
Run Code Online (Sandbox Code Playgroud)

我正在尝试这个查询:

SELECT post.title
FROM post
INNER JOIN filter ON filter.reader ='2'
LIMIT 0 , 10
Run Code Online (Sandbox Code Playgroud)

我想要的是表格帖子中的所有标题,其中id(在本例中为2)与表格过滤器中的阅读器匹配.

查询有效但我得到重复,所以我在某个地方错过了一个关键点?

Joh*_*Woo 6

您获得多个结果的原因是因为您的查询从两个表生成笛卡尔积,因为您没有指定表的连接方式.

SELECT post.title
FROM   post
       INNER JOIN filter 
           ON filter.postID = post.postID // tells how are tables be joined
WHERE  filter.reader = '2'
LIMIT 0 , 10
Run Code Online (Sandbox Code Playgroud)

要进一步了解联接,请访问以下链接: