sql - SQL Join 同一张表
问题描述
Table T
P_ID | Name | Status
1 ABC Ordered
1 ABC Processing
1 ABC Imported
2 PQR Ordered
2 PQR Failed
3 LMN Ordered
预期结果
Table T
P_ID | Name | Status
2 PQR Ordered
2 PQR Failed
3 LMN Ordered
通过以下查询,我没有得到正确的结果。我想查找所有状态为已订购但状态不为“已导入”的记录。
select c1.P_ID,c1.Name,c2.Status
from T c1, T c2
where c1.P_ID = c2.P_ID
c1.Status="Ordered" and c2.status != "Imported"
使用 Oracle 11g 数据库
解决方案
select c1.P_ID, c1.Name, c1.Status
from T c1
where c1.Status = 'Ordered' and
NOT EXISTS (SELECT 1
FROM T c2
WHERE c1.P_ID = c2.P_ID and c2.status = 'Imported'
);
推荐阅读
- ios - 标签未固定在表格视图单元格的右侧
- angular - Angular/Typescript:只读修饰符不起作用
- apache-spark - PySpark 窗口结束:有没有更好的方法来查找两列分区的行号
- java - 具有多个文件附加器的 Log4j2 json 配置
- aframe - 为自定义组件中的自定义属性设置动画
- javascript - 导航 json 文件以创建 jquery 自动完成所需的数组
- csv - 创建 Apache poi Workbook 时出现 Java 堆空间问题
- java - POS Hypercom Terminal T4230 使用 Java 串行端口通信的集成问题
- python - 将时间戳转换为 datetime.time python
- regex - 正则表达式与分支名称不匹配