Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MySQL和PostreSQL中合并到语句中_Mysql_Sql_Postgresql_Hsqldb - Fatal编程技术网

在MySQL和PostreSQL中合并到语句中

在MySQL和PostreSQL中合并到语句中,mysql,sql,postgresql,hsqldb,Mysql,Sql,Postgresql,Hsqldb,我正在使用HSQLDB,并且有一个将数据合并到表中的语句: 使用(值(null、、?)合并到用户中”+ “作为用户上的VAL(A、B、C)。名称=VAL.B 和USER.EMAIL=VALS.C“+ “匹配后,更新SET USERS.NAME=VALS.B, USERS.EMAIL=VALS.C“+ 如果不匹配,则插入值VAL.A、VAL.B、VAL.C 如果用户存在,此语句将更新一行,如果用户不存在,则创建一个新的行 看起来MySQL和PostgreSQL不支持将合并到中 在MySQL和Po

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

使用(值(null、、?)合并到用户中”+
“作为用户上的VAL(A、B、C)。名称=VAL.B
和USER.EMAIL=VALS.C“+
“匹配后,更新SET USERS.NAME=VALS.B,
USERS.EMAIL=VALS.C“+
如果不匹配,则插入值VAL.A、VAL.B、VAL.C
如果用户存在,此语句将更新一行,如果用户不存在,则创建一个新的行

看起来MySQL和PostgreSQL不支持将
合并到


在MySQL和PostgreSQL中,如何在不使用
合并到
的情况下执行相同的语句?我希望只有一条语句,并且性能优异。

如果您的需求与一些问题有关,如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有一种不同的语法:在postgres 9.5+中,在insert语句中使用
on conflict
子句