Snowflake中能否不使用MERGE语句,仅用INSERT实现不存在则插入?
能否用INSERT语句替代MERGE实现仅插入不存在load_id的行?
原MERGE语句的作用是对比stg.my_table和stg.my_view的load_id,仅向目标表插入那些load_id不存在的新行。
当然可以只用INSERT语句实现完全相同的效果,借助INSERT ... SELECT搭配NOT EXISTS子查询即可,具体写法如下:
INSERT INTO stg.my_table (id, document_type, state, publication_date) SELECT src.id, src.document_type, src.state, src.publication_date FROM stg.my_view AS src WHERE NOT EXISTS ( SELECT 1 FROM stg.my_table AS tgt WHERE tgt.load_id = src.load_id );
这段代码的逻辑和原MERGE完全一致:通过NOT EXISTS子查询校验视图中的每一行load_id是否已存在于目标表,只有不存在匹配load_id的行才会被插入到stg.my_table中。
内容的提问来源于stack exchange,提问作者x89
相关产品推荐
相关产品推荐

