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

如何不用存储过程从年度源表中排除动态行数表的指定日期数据

实现方案

不需要使用存储过程,也不需要针对待剔除表的行数动态编写case when语句,以下是3种通用普通查询实现方式:


方法1:NOT EXISTS关联过滤(推荐,性能最优)

直接通过关联匹配排除符合剔除条件的记录,自动适配待剔除表的任意行数:

SELECT t1.*
FROM 年度数据表 t1
WHERE NOT EXISTS (
    SELECT 1
    FROM 待剔除日期表 t2
    WHERE t1.DISPLAY_NAME = t2.DISPLAY_NAME
      -- 替换下方日期字段为你两张表对应的实际日期字段名
      AND t1.统计日期 = t2.待剔除日期
)

方法2:LEFT JOIN + 空值判断

逻辑更直观,和NOT EXISTS执行效率基本一致:

SELECT t1.*
FROM 年度数据表 t1
LEFT JOIN 待剔除日期表 t2
  ON t1.DISPLAY_NAME = t2.DISPLAY_NAME
  AND t1.统计日期 = t2.待剔除日期
-- 关联不上的就是不需要剔除的记录
WHERE t2.DISPLAY_NAME IS NULL

方法3:标记保留字段(适配需要先打标记再筛选的场景)

如果需要先给数据打保留/剔除标记再过滤,也不需要写多个case when,单次关联即可完成标记:

SELECT 
  t1.*,
  CASE WHEN t2.DISPLAY_NAME IS NULL THEN 1 ELSE 0 END AS 保留标记
FROM 年度数据表 t1
LEFT JOIN (
  -- 提前去重避免源表数据被关联重复
  SELECT DISTINCT DISPLAY_NAME, 待剔除日期 FROM 待剔除日期表
) t2
  ON t1.DISPLAY_NAME = t2.DISPLAY_NAME
  AND t1.统计日期 = t2.待剔除日期
-- 如需直接获取保留数据,新增过滤条件 WHERE 保留标记 = 1 即可

表结构参考

  • 源表示意图:源表示意图
  • 待剔除日期表示意图:待剔除日期表示意图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 18:48:00