sql - 如果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
查找所有符合以下条件的产品:
- 产品!= 6
- 不属于任何家庭,
- 如果其中一个家庭有产品 6
解决方案
使用相关子查询not exists
select product , family
from tbl a
where not exists ( select 1 from tbl b where a.family=b.family and product=6)
推荐阅读
- javascript - Toastr 未定义,javascript 错误
- json - 使用 Codable 问题解码 JSON。keyNotFound 错误信息
- c++ - 为什么标准不允许通过引用捕获不完整的异常类型?
- maven - 试图理解 OSGi 解析错误
- php - 如何在while循环中从mysqli_fetch_array()中检索当前和下一个元素?
- sql - Oracle:覆盖具有最长字符串的列中的值
- adobe - WCM IO 测试吊索映射
- java - 无法运行程序“query.sh”:CreateProcess error=2,系统找不到指定的文件
- python - Python boto3 从禁用备份的快照创建 rds 实例
- javascript - 在迁移中添加自动 createdAt 和 updatedAt 时间戳