【发布时间】:2016-11-30 02:59:50
【问题描述】:
我正在使用 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 执行相同的语句?我想拥有唯一的一个声明并具有出色的性能。
【问题讨论】:
-
在 postgres 9.5+ 中使用
on conflict插入语句中的子句 postgresql.org/docs/9.5/static/sql-insert.html#SQL-ON-CONFLICT
标签: mysql sql postgresql hsqldb