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

Oracle SQL Developer中如何获取query1存在而query2不存在的元素

Oracle SQL取query1独有的ID的实现方案

方案1:使用MINUS集合运算符(最简洁)

Oracle原生支持集合差运算,直接对两个结果集求差即可:

SELECT ID FROM table1
MINUS
SELECT ID FROM table2
UNION
SELECT ID FROM table3;

特性说明:MINUS会自动对最终结果去重,完全匹配你需要的「存在于query1、不存在于query2」的集合逻辑,写法最简单。

方案2:使用NOT IN子查询

适合习惯子查询写法的场景,注意规避NULL值风险:

SELECT DISTINCT ID
FROM table1
WHERE ID NOT IN (
    SELECT ID FROM table2
    UNION
    SELECT ID FROM table3
);

注意:如果子查询返回的ID存在NULL值,NOT IN会返回空结果,确定ID无NULL时可以用。

方案3:使用NOT EXISTS关联查询(性能最稳定)

不受NULL值影响,大数据量下性能更可控:

SELECT t1.ID
FROM table1 t1
WHERE NOT EXISTS (
    SELECT 1 FROM (
        SELECT ID FROM table2
        UNION
        SELECT ID FROM table3
    ) t2
    WHERE t2.ID = t1.ID
);

特性说明:如果ID字段允许为空、或者表数据量较大,优先选择这个方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 08:27:03