我正在使用 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
执行相同的语句?我想要唯一的一个声明并具有出色的性能。
最佳答案
如果您的需求与诸如 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+。
关于mysql - MySQL 和 PostgreSQL 中的 MERGE INTO 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38590271/