首页 > 解决方案 > 如果group by的任何一行不包含值,则sql选择行

问题描述

仅当 group by 不包含值时,我如何选择一行。

样本数据:

CREATE TABLE tbl (
    id serial NOT NULL ,
    product int4 NULL,
    family int4 NULL    
);

insert into tbl values 
(1,3,200),
(2,6,201),
(3,7,201),
(4,1,203),
(5,3,204),
(6,6,205),
(7,1,206);

http://sqlfiddle.com/#!9/744bc1/2

查找所有符合以下条件的产品:

  1. 产品!= 6
  2. 不属于任何家庭,
    • 如果其中一个家庭有产品 6

标签: sqlpostgresqljoin

解决方案


使用相关子查询not exists

演示

select product , family
from tbl a 
  where not exists ( select 1 from tbl b where a.family=b.family and product=6)

推荐阅读