You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle SQL查询:获取满足三条件的唯一PC_ID(禁用COUNT)

满足多条件的Oracle SQL查询方案

针对你的需求,这里提供两种简洁且不使用COUNT函数的写法,均能适配PC_ID重复、EDI_ID不固定的数据集:

方法1:多表关联+去重

通过三次关联表B,分别匹配三个KEY-VALUE条件,确保同一个PC_ID对应的EDI_ID能命中所有要求,最后用DISTINCT获取唯一PC_ID:

SELECT DISTINCT a.PC_ID
FROM table_a a
JOIN table_b b1 ON a.EDI_ID = b1.ID AND b1.KEY = 'X' AND b1.VALUE = 'some'
JOIN table_b b2 ON a.EDI_ID = b2.ID AND b2.KEY = 'Y' AND b2.VALUE = 'something'
JOIN table_b b3 ON a.EDI_ID = b3.ID AND b3.KEY = 'Z' AND b3.VALUE = 'thing';

方法2:INTERSECT交集查询

分别查询满足单个条件的PC_ID,再通过INTERSECT取三个结果集的交集,自动实现去重:

SELECT a.PC_ID
FROM table_a a
JOIN table_b b ON a.EDI_ID = b.ID
WHERE b.KEY = 'X' AND b.VALUE = 'some'
INTERSECT
SELECT a.PC_ID
FROM table_a a
JOIN table_b b ON a.EDI_ID = b.ID
WHERE b.KEY = 'Y' AND b.VALUE = 'something'
INTERSECT
SELECT a.PC_ID
FROM table_a a
JOIN table_b b ON a.EDI_ID = b.ID
WHERE b.KEY = 'Z' AND b.VALUE = 'thing';

这两种写法都比多层IN子查询更简洁易读,且能正确处理你提到的复杂数据集场景。

内容的提问来源于stack exchange,提问作者LiefLayer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 17:12:08