[英]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.