表记录不存在

时间:2019-04-07 06:51:49

标签: sql

减去表seq和article。 seq表具有seq'3'的4条匹配记录,article表具有seqid'3'的3条匹配记录。我想从seq表中减去商品表(4-3 = 1)。输出仅返回一条记录。

SEQ 
id  seq
9    3
11   3
12   4
13   3
16   4
19   3 

article 
id  seqid  article
 6    3    HR Skills
 7    6    Finance 
 9    4    IT
12    3    HR Skills
15    3    HR Skills

SELECT s.id, s.seq, a.article 
FROM seq s 
INNER JOIN article a ON s.seq = a.seqid 
WHERE s.seq NOT EXISTS (select seqid from article);

当我执行查询时,它从两个表中返回所有匹配的记录。我希望查询减去(4-3 = 1)。

输出:(4-3 = 1)

s.id s.seq a.seqid   a.article
 13    3      3      HR Skills

2 个答案:

答案 0 :(得分:0)

如果仅此而已,您可以执行以下操作-

SELECT s.seq, 
(COUNT(1) - (SELECT COUNT(1) FROM article WHERE seqid = s.seq) AS difference,
(SELECT article FROM article WHERE seqid = s.seq LIMIT 1) AS article
FROM seq s 
GROUP BY s.seq

这样,您可以得到所有序列的差异

答案 1 :(得分:0)

查询

 select seqcnt.cnt ,articlecnt.cnt,  isnull(seqcnt.cnt,0) - isnull(articlecnt.cnt,0) subtract  , article. article
    from 
    (select distinct seq , count(seq) cnt from seq  group by seq ) seqcnt
    left join (select distinct seqid , count(seqid) cnt from  article   group by seqid ) articlecnt on seqcnt.seq =  articlecnt.seqid 
    left join (select distinct seqid , article  from  article) article on article. seqid = seqcnt.seq

输出

enter image description here