一篇文章可能有多个标签。现在同时选择多个标签怎么写sql语句查出至少符合这些标签的文章

我的表是这样的,文章表、标签表、关联表。文章表---------Articleidtitle1标题12标题23标题3标签表---------Tagsidtag_name1... 我的表是这样的,文章表、标签表、关联表。文章表---------Articleid title 1 标题1 2 标题2 3 标题3标签表---------Tagsid tag_name 1 php 2 java 3 c++关联表---------Article_has_TagsArticle_id Tags_id 1 1 1 2 1 3 2 1 2 3 3 2 3 3----------------------------------假如现在只需要查标签是php的就很容易, 关联3张表,......where Tags.id=1。现在的问题是如果同时要满足2个条件 .......where Tags.id = 1 AND Tags.id =2 ,是查不出来的。 如果用in或者or的话,比如 where Tags.id in (1,3) ,就会查出多条数据,把关联表的最后一条 也查出来了,不符合(文章至少有标签1和标签3)需求,因为这条数据的文章只有标签3没有标签1。 请问数据库应该如何设计,或者sql应该怎样写呢? 展开
 我来答
百度网友0ba9ea42f
2016-08-02 · TA获得超过240个赞
知道小有建树答主
回答量:151
采纳率:0%
帮助的人:173万
展开全部
select A.* from Article A inner join Article_has_Tags H on A.id=H.Article_id inner join Tags T on H.Tags_id=T.id where T. tag_name in('php','c++')
更多追问追答
追问
你这样会把关联表的最后一条数据 3 3 也查出来的,不符合需求。你可以试试。
追答
因为最后一项本来就含有第3种标签c++,确实没错啊,搜索条件就是php或c++,勾选标签查找目的当然是为了搜索符合其中任意一个标签的文章,如果你想达到必须同时满足勾选的标签,那就要改成:select A.* from Article A inner join Article_has_Tags H on A.id=H.Article_id inner join Tags T on H.Tags_id=T.id where T. tag_name='php' and T. tag_name='c++'
要么是与运算要么或运算,只有这两种可能啊,你勾选多个标签的目的是什么
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式