为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕标5832272 2018-09-08 15:11:30
表结构是这样的: article 表:id  title   cid1   xxx     52   xxx2    63   xxxx3   7article_line 关系表article_id  line_id1           201           211           222           202           282           40现在的需求是: 查询 line_id 等于20, 且文章cid=6, 并且排除line_id=21的數據, 比如上面article_id=2的就符合,等于1的不符合求大神帮忙实现
查看完整描述

2 回答

?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

查询 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)
  )


查看完整回答
反对 回复 2018-09-09
?
千万里不及你

TA贡献1784条经验 获得超9个赞

select * from article where cid=6 and id in (select article_id from article_line where line_id=20)

查看完整回答
反对 回复 2018-09-09
  • 2 回答
  • 0 关注
  • 669 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信