SQL:简单的if-then-else语句,没有任何选择

时间:2016-03-07 23:47:23

标签: mysql sql postgresql

我想使用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语句,我似乎并不需要。

1 个答案:

答案 0 :(得分:1)

好的,通过一点点搜索,我找到了答案。

在mysql上使用insert ... on duplicate key update ...命令。您需要做的就是在col1和col2上创建一个pk或唯一索引。

在postgresql中,您可以使用upsert (insert ... on conflict update ...)来获得相同的结果。