鍍金池/ 問答/數(shù)據(jù)庫/ mysql的聯(lián)合查詢問題,求幫助

mysql的聯(lián)合查詢問題,求幫助

表結(jié)構(gòu)是這樣的: article 表:

id  title   cid
1   xxx     5
2   xxx2    6
3   xxxx3   7

article_line 關(guān)系表

article_id  line_id
1           20
1           21
1           22
2           20
2           28
2           40

現(xiàn)在的需求是: 查詢 line_id 等于20, 且文章cid=6, 并且排除line_id=21的數(shù)據(jù), 比如上面article_id=2的就符合,等于1的不符合

求大神幫忙實現(xiàn)

回答
編輯回答
離夢

查詢 line_id 等于20, 且文章cid=6, 并且排除line_id=21這個需求你自己不覺得矛盾嗎? 既然已經(jīng)過濾只有 line_id=20, 那么結(jié)果集還需要排除line_id=21?

你的真實需求是不是 查詢 line_id 等于20但是不等于21的所有文章?

這個場景使用Exists語句

SELECT a.*
FROM article a
WHERE 
  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)
  )
2017年12月7日 21:54
編輯回答
我以為

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

2017年6月20日 22:51