我想使用 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 之后的“then”,有或没有“end if”,有“begin”和“end”,但似乎没有任何效果,所以我想我一定是非常错误的事情。我发现这里的其他问题总是包含一个 SELECT 语句,其中嵌入了 if 语句,我似乎不需要它。
最佳答案
好的,经过一些搜索,我找到了答案。
在 mysql 上使用 insert ... on duplicate key update ...命令。您需要做的就是在 col1 和 col2 上创建一个 pk 或唯一索引。
在 postgresql 中你可以使用 upsert (insert ... on conflict update ...)达到相同的结果。
关于mysql - SQL:没有任何选择的简单 if-then-else 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35856398/