繁体   English   中英

MySql-根据匹配的ID获取行

[英]MySql - Get rows based on matching ids

我的下一步查询有问题,我的想法是在这里完全空白…。我有3个MySql表。

第一个表称为post,并具有一个id列(还有其他列,但它们不相关)

Id    Title    
----  --------
1      A
2      B

第二个表称为followingPost(张贴用户喜欢的表),它具有一个id列,userid列和postid列

Id    userid    postid
----  --------  -------------------
1     1         2
3     2         1

第三个表称为postTags(帖子的标签),其中有一个id列,postid列和tagid列。

Id    postid      tagid    
----  --------    --------
1     2           1
2     1           1

获取用户喜欢的帖子,我已经完成了以下操作

SELECT *
FROM followingPost
INNER JOIN posts ON posts.id = followingPost.postid
WHERE userid = 14

然后让用户喜欢带有标签ID的帖子,我已经完成了以下操作

SELECT *
FROM followingPost
INNER JOIN posts ON posts.id = followingPost.postid
INNER JOIN postTags ON posts.id = postTags.postid
WHERE userid = 14

我要尝试做的就是获取用户喜欢的帖子的标签,并获取所有具有相同标签ID的帖子。

这是我所期望的:

    Id    Title    
    ----  --------
    2      B

我期望如此,因为用户1喜欢帖子2,而帖子2的标签为1,所以帖子1也是如此,所以我希望返回帖子1

关于如何完成最后一步的任何想法?

我真的希望这是有道理的,如果您需要我清理任何内容,请告诉我。

select * from posts
left join postTags on posts.id = postTags.postid
where postTags.tagid in
 (SELECT postTags.tagid
 FROM followingPost
 INNER JOIN posts ON posts.id = followingPost.postid
 INNER JOIN postTags ON posts.id = postTags.postid
 WHERE userid = 14) 
and posts.id not in 
 (SELECT posts.id
 FROM followingPost
 INNER JOIN posts ON posts.id = followingPost.postid
 INNER JOIN postTags ON posts.id = postTags.postid
 WHERE userid = 14) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM