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

如何用PL/SQL查询Table2中未匹配对应分类范围的记录

查询Table2中未匹配对应分类范围的记录

假设Table1为分类范围表,结构包含category(分类名称)、min_val(区间最小值)、max_val(区间最大值);Table2为待检查表,包含数值字段(例如num_val)。以下是几种实现方式:

方式1:用NOT EXISTS子查询直接筛选

SELECT t2.*
FROM Table2 t2
WHERE NOT EXISTS (
    SELECT 1
    FROM Table1 t1
    WHERE t2.num_val BETWEEN t1.min_val AND t1.max_val
);

逻辑:对Table2的每条记录,检查是否不存在Table1中能覆盖其数值的区间,不存在则返回该记录。

方式2:通过LEFT JOIN筛选未匹配项

SELECT t2.*
FROM Table2 t2
LEFT JOIN Table1 t1 
    ON t2.num_val BETWEEN t1.min_val AND t1.max_val
WHERE t1.category IS NULL;

逻辑:LEFT JOIN保留Table2所有记录,匹配到区间的记录会关联上Table1的分类信息,未匹配的记录中Table1的字段为NULL,以此筛选目标记录。

PL/SQL块处理(含输出)

如果需要在PL/SQL中处理并输出结果:

DECLARE
    CURSOR cur_unmatched IS
        SELECT t2.*
        FROM Table2 t2
        WHERE NOT EXISTS (
            SELECT 1
            FROM Table1 t1
            WHERE t2.num_val BETWEEN t1.min_val AND t1.max_val
        );
    rec_unmatched cur_unmatched%ROWTYPE;
BEGIN
    OPEN cur_unmatched;
    LOOP
        FETCH cur_unmatched INTO rec_unmatched;
        EXIT WHEN cur_unmatched%NOTFOUND;
        DBMS_OUTPUT.PUT_LINE('未匹配记录:数值=' || rec_unmatched.num_val || '(无对应分类区间)');
    END LOOP;
    CLOSE cur_unmatched;
END;
/

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 04:02:13