mysql - MySQL 和 PostgreSQL 中的 MERGE INTO 语句

标签 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 执行相同的语句?我想要唯一的一个声明并具有出色的性能。

最佳答案

如果您的需求与诸如 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

关于mysql - MySQL 和 PostgreSQL 中的 MERGE INTO 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38590271/

相关文章:

mysql - 从 SQL 中的多个表中选择 'field_name'?

sql - 对另一个查询的结果执行查询?

sql - 两个缓冲区的区别

mysql - 如何查看用户x和用户x的状态?

php - 在 PHP 中的 <img> 标签的开头和结尾附加 <figure> 标签

php - 怎么了?更新 time_last_login 和 date_last_login PDO MySQL

python - 如何在 Django 项目中使用 MYSQL 作为数据库?

c# - 如何检查我的数据库中是否已存在一个值并显示验证消息

java - 在外部 Postgres 数据库更新时触发 java 事件

python - 并发 psycopg2 postgres 选择查询的空结果