表结构是这样的: 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) )
千万里不及你
TA贡献1784条经验 获得超9个赞
select * from article where cid=6 and id in (select article_id from article_line where line_id=20)
添加回答
举报
0/150
提交
取消