为了账号安全,请及时绑定邮箱和手机立即绑定

避免雪花存储过程中的重复项

避免雪花存储过程中的重复项

慕村225694 2023-03-03 09:53:10
我编写了一个存储过程来将值插入表中。但是当我两次调用存储过程时,重复的值被插入到表中。如何避免存储过程中的值重复。这是我的存储过程:CREATE OR REPLACE PROCEDURE get_columns(TABLE_NAME VARCHAR)RETURNS ARRAYLANGUAGE JAVASCRIPTAS$$var stmt = snowflake.createStatement({    sqlText: "SELECT * FROM " + TABLE_NAME + " LIMIT 1;",    });stmt.execute();var cols=[];for (i = 1; i <= stmt.getColumnCount(); i++) {  INSERT INTO TABLE1 (Col_Name) VALUES ('+"stmt.getColumnName(i)"+');  //DUPLICATE VALUES}return cols$$;编辑:我正在检索 Col_table say 的列名(Col1, Col2, Col3),我希望将这些列名放入 TABLE1 中。我调用了该过程call get_columns(Col_table)并将列名插入到 TABLE1 中。当我再次调用该过程时call get_columns(Col_table),TABLE1 将具有重复值,如(Col1, Col2, Col3, Col1, Col2, Col3). 我想通过使用合并或更新或任何其他方法来避免重复。
查看完整描述

1 回答

?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

根据编辑后的问题和评论:

  1. “当我再次调用过程 [...] 时,TABLE1 将具有重复值 [...]。我想通过使用合并或更新或任何其他方法来避免重复”

  1. “当我在两个不同的表列上调用过程时,INSERT OVERWRITE 正在替换表的行”

然后,如果您不想将重复的值插入到现有表中,您可以这样做:

INSERT INTO TABLE1(Col_Name) 

SELECT *

FROM (SELECT 'i' x)

WHERE x NOT IN (SELECT Col_Name FROM TABLE1);

在您的过程中替换该 SQL 代码,您将不会看到重复的值。替换'i'为您要插入的值。


(作为一般性评论:我不确定问题中的过程是否是解决整体问题的最有效解决方案,但这将解决重复行的具体问题)


查看完整回答
反对 回复 2023-03-03
  • 1 回答
  • 0 关注
  • 87 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信