MySQL和PostreSQL中的MERGE INTO语句

时间:2016-07-26 12:44:48

标签: mysql sql postgresql hsqldb

我正在使用HSQLDB并且有一个将数据合并到表中的语句:

MERGE INTO USERS USING (VALUES(null,?,?))" +
"AS VALS(A,B,C) ON USERS.NAME = VALS.B 
 AND USER.EMAIL = VALS.C " +
"WHEN MATCHED THEN UPDATE SET USERS.NAME = VALS.B, 
 USERS.EMAIL = VALS.C " +
"WHEN NOT MATCHED THEN INSERT VALUES VALS.A, VALS.B, VALS.C

如果用户存在,此语句将更新一行,否则会创建一行。

看起来MySQL和PostgreSQL不支持MERGE INTO

如何在MySQL和PostgreSQL中不使用MERGE INTO的情况下执行相同的语句?我希望得到唯一的陈述并且表现出色。

1 个答案:

答案 0 :(得分:0)

如果您的必需品与某些问题相关联,例如MERGE for MySQL,您可以尝试使用以下语法:

UPDATE a
INNER JOIN b
  ON a.feild1= b.feild1
SET a.feild2= b.feild2
WHERE a.feild3 = 0;

它适用于MySQL 5+,我认为它也适用于MySQL 4+。

The source link of the solution