如果我在文章和标签之间有多对多的关系,那么选择包含特定用户存储的标签的所有文章的最佳方法是什么?
对于本例,假设存在一个包含user_id列的users表。文章
Article_id | Article_name | 1 | 狗 | 2
---|---|
猫 | |
3 | 羊 |
如果我没看错的话,应该是带有"内连接"的有序结构。看起来,专栏"Tag_Id"包含一个打印错误,因为表格"标签"没有"猫";价值。
Select A.Article_id, A.Article_name, U.Tag_id
From Users_Tags As U Inner Join Article_Tags As T On (U.Tag_id=T.Tag_id)
Inner Join Articles As A On (T.Article_id=A.Article_id)
Where U.User_id='User1'
如果您想要与特定用户有共同标签的文章,请尝试:
select * from articles A
where exists(select 1 from article_tags B
where B.article_id = A.article_id and B.tag_id IN
(select tag_id from users_tags where user_id = 'User1'));