mysql的联合查詢问题,求帮助

表结构是这样的: article 表:

id  title   cid1   xxx     52   xxx2    63   xxxx3   7

article_line 关系表

article_id  line_id1           201           211           222           202           282           40

现在的需求是: 查询 line_id 等于20, 且文章cid=6, 并且排除line_id=21的數據, 比如上面article_id=2的就符合,等于1的不符合

求大神帮忙实现


慕标5832272
浏览 670回答 2
2回答

有只小跳蛙

查询 line_id 等于20, 且文章cid=6, 并且排除line_id=21这个需求你自己不觉得矛盾吗? 既然已经过滤只有 line_id=20, 那么结果集还需要排除line_id=21?你的真实需求是不是 查询 line_id 等于20但是不等于21的所有文章?这个场景使用Exists语句SELECT a.*FROM article aWHERE    EXISTS(SELECT al.article_id             FROM article_line al             WHERE al.line_id = 20 AND al.article_id = a.id)  AND NOT EXISTS(    SELECT al.article_id    FROM article_line al    WHERE al.line_id = 21 AND al.article_id = a.id)   )

千万里不及你

select * from article where cid=6 and id in (select article_id from article_line where line_id=20)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

MySQL