验证T2是否已删除所有含早于2022-01-01事件的ID数据
正确的校验方法
要确认T2中已彻底清除所有存在Event_Date < '2022-01-01'事件的ID,可以从两个核心维度做校验,以下是具体SQL语句:
维度1:检查T2是否残留需删除的ID
这条语句会找出T2中所有属于「原始数据(T1)里存在早于2022-01-01事件」的ID,返回空结果(或统计数为0)则说明没有残留:
-- 查看具体残留ID(返回空则正常) SELECT DISTINCT T2.ID FROM T2 WHERE T2.ID IN ( SELECT DISTINCT ID FROM T1 WHERE EVENT_DATE < '2022-01-01' ); -- 或直接统计残留数量(返回0则正常) SELECT COUNT(*) AS residual_invalid_id_count FROM T2 WHERE T2.ID IN ( SELECT DISTINCT ID FROM T1 WHERE EVENT_DATE < '2022-01-01' );
维度2:确认所有需删除的ID已从T2移除
这条语句会找出「原始数据里存在早于2022-01-01事件,但仍在T2中存在」的ID,返回空则说明所有目标ID已被彻底删除:
SELECT DISTINCT T1.ID FROM T1 WHERE T1.EVENT_DATE < '2022-01-01' AND T1.ID IN (SELECT ID FROM T2);
为什么你之前的SQL无法满足需求?
你之前的关联查询通过INNER JOIN关联T1和T2,再过滤T1中早于日期的记录。如果T2中已删除目标ID,这条查询确实会返回空,但它的逻辑表述不够直接——没有明确聚焦在「需删除的ID是否还在T2」上。用上面两种方法能更清晰、精准地完成校验。
内容的提问来源于stack exchange,提问作者Pop23
相关产品推荐
相关产品推荐

