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

标签 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 之后的“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/

相关文章:

mysql - 左外连接,其中表来自两个不同的数据库系统

mysql - 从组中选择后更新记录

mysql - 将一个表中的行插入到另一个表中,但只插入那些没有重复的行

sql - 如何获得 "inherit"UNIQUE 属性?

java - 无法获取 PSQLException 的错误消息

mysql - 如果行数超过 1,则获取最早时间

php - 将实时站点移至本地 - 问题识别数据库

c# - 展平具有未知列数的子/父数据

mysql - lastInsertId(tableName_id_seq) 返回 :Undefined table: 7 ERROR: relation "tableName_id_seq" does not exist

sql - 为什么 PostgreSQL 需要 Execute 脚本而不需要 query_to_xml 脚本?