Snowflake条件插入报错求助:仅当无特定值时从其他表插入
Snowflake条件插入的正确实现方式
你的SQL语法结构完全错误,Snowflake的INSERT语句不支持直接用WHEN做表级条件判断,需要通过NOT EXISTS子查询来检查目标表状态,再执行插入操作。
正确SQL语句
INSERT INTO test.log_t (filename) SELECT filename FROM test.tab_stg WHERE insert_f = 'Y' -- 仅当test.log_t中不存在'not-tested'、'ok'这两个status值时,执行插入 AND NOT EXISTS ( SELECT 1 FROM test.log_t WHERE status IN ('not-tested', 'ok') );
关键说明
- 原代码的
WHEN用法不符合Snowflake的INSERT语法规范,必须用子查询通过NOT EXISTS实现表级条件判断。 - 你的过滤条件
insert_f = 'Y' AND insert_f <> 'N'属于冗余逻辑,insert_f='Y'本身已满足不等于'N',直接保留insert_f='Y'即可。 NOT EXISTS子查询会校验目标表test.log_t中是否存在指定状态值:若不存在则执行外层插入逻辑;若存在则不插入任何数据。
内容的提问来源于stack exchange,提问作者rahul
相关产品推荐
相关产品推荐

