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

Oracle SQL负向查询编写:识别TAB1无TAB2匹配的异常数据

坏数据识别SQL实现

先拆解原查询的筛选逻辑:原查询从TAB1中选取满足以下任一条件的行:

  • 当A.col6不为空时,能通过A.col6 = B.col7关联到TAB2的记录;
  • 当A.col6为空时,能通过A.col1 = B.col1关联到TAB2的记录。

要识别TAB1中不满足上述任一条件的坏数据,也就是:

  • A.col6不为空,但无法通过A.col6 = B.col7关联到TAB2的任何记录;
  • 或者A.col6为空,但无法通过A.col1 = B.col1关联到TAB2的任何记录。

对应的负向查询SQL如下:

SELECT A.col1, A.col2, A.col3, A.col4, A.col5, A.col6
FROM TAB1 A
LEFT OUTER JOIN TAB2 B
    ON (A.col6 IS NOT NULL AND A.col6 = B.col7) 
    OR (A.col6 IS NULL AND A.col1 = B.col1)
WHERE B.col1 IS NULL; -- 若TAB2有主键或非空约束列,替换为该列判断未关联更准确

逻辑说明

  1. 关联条件合并:把原查询的两个分支关联逻辑整合到LEFT JOIN的ON子句中,一次性覆盖两种关联场景;
  2. 未关联判断:通过WHERE B.col1 IS NULL筛选出TAB1中无法匹配TAB2任何记录的行,这些就是需要识别的坏数据(如果TAB2有更合适的非空标识列,比如主键,替换成该列能提升判断准确性)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 12:14:53