我想使用if-then-else结构来决定运行两个不同命令中的哪一个。但是,在尝试使用if语句时,我总是遇到语法错误。
查询应该在MySQL和postgresql中运行。
IF EXISTS (SELECT * FROM Table WHERE col1 = val1 AND col2 = val2)
UPDATE Table SET col3 = val3 WHERE col1 = val1 AND col2 = val2
ELSE
INSERT INTO Table VALUES (val1, val2, val3) END IF;
我得到的是ERROR: syntax error at or near "IF"
。
我尝试了各种版本,包括'然后' if之后,有或没有结束,如果'结束'开始'并且'结束',但似乎没有任何作用,所以我认为我必须得到一些非常错误的东西。我在这里发现的其他问题总是包含一个SELECT语句,其中嵌入了if语句,我似乎并不需要。
答案 0 :(得分:1)
好的,通过一点点搜索,我找到了答案。
在mysql上使用insert ... on duplicate key update ...命令。您需要做的就是在col1和col2上创建一个pk或唯一索引。
在postgresql中,您可以使用upsert (insert ... on conflict update ...)来获得相同的结果。