gpt4 book ai didi

sql - 雪花 sql 更新如果存在否则插入

转载 作者:行者123 更新时间:2023-12-02 01:33:35 25 4
gpt4 key购买 nike

我看过其他问题,但似乎雪花不支持 if/else in sql,至少不是其他 sql 服务器支持它的方式。

有些人建议使用 javascript,但我想尽可能避免使用它。

我正在尝试使用 snowflake python 库将一些数据插入到表中,如果它已经存在,那么我想更新数据,我已经查看了合并,但它似乎不适合我,因为我的数据不存在一张 table

这就是我到目前为止没有用的东西

f"""BEGIN
IF (EXISTS (SELECT * FROM {self.okr_table} WHERE kpi=TRUE AND Month(month)=MONTH(current_date()) AND year(month)=YEAR(current_date())))
THEN
UPDATE {self.okr_table} SET [DATA] = {json.dumps(self.data)} WHERE kpi=TRUE AND Month(month)=MONTH(current_date()) AND year(month)=YEAR(current_date()))
ELSE
INSERT INTO {self.okr_table} (month, data, kpi) SELECT current_date(),parse_json('{json.dumps(self.data)}'), true;
END"""

最佳答案

要执行 INSERT/UPDATE,最好使用单个 MERGE 语句

I have looked at merge but it doesn't seem to fit me since my data isn't a table

这不是问题,因为源可以是表或子查询:

MERGE INTO {self.okr_table} 
USING (SELECT PARSE_JSON({json.dumps(self.data)} AS data
, MONTH(current_date()) AS month
, YEAR(current_date()) AS year
) s
ON {self.okr_table}.KPI
AND MONTH({self.okr_table}.month) = s.month
AND YEAR({self.okr_table}.month) = s.year
WHEN MATCHED THEN UPDATE
WHEN NOT MATCHED THEN INSER ...;

IF/ELSE 分支在 Snowflake 中有效:

BEGIN
IF (EXISTS (...)) THEN
UPDATE ... ;
ELSE
INSERT ... ;
END IF;
END;

请注意 ; 在每个语句之后,END IF 和条件括号。

关于sql - 雪花 sql 更新如果存在否则插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72885625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com