在MySQL和PostreSQL中合并到语句中
我正在使用HSQLDB,并且有一个将数据合并到表中的语句:在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
使用(值(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
子句