如何从多对多关系中过滤值?

  • 本文关键字:过滤 关系 postgresql
  • 更新时间 :
  • 英文 :


如果我在文章和标签之间有多对多的关系,那么选择包含特定用户存储的标签的所有文章的最佳方法是什么?

对于本例,假设存在一个包含user_id列的users表。文章

tbody> <<tr>2
Article_id Article_name
1
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'));

最新更新