Mysql 选择语句中的SQL UPDATE语句?

Mysql 选择语句中的SQL UPDATE语句?,mysql,sql,sequelpro,Mysql,Sql,Sequelpro,我在表中有一个id和缩写列。我想更新另一台服务器上另一个数据库中的缩写列。。我知道如何获取SQLSELECT语句,但是如何从中获取在另一个数据库上运行的UPDATE语句呢 基本上,我想得到如下结果: UPDATE table SET abbrv=x WHERE id=1; UPDATE table SET abbrv=y WHERE id=2; 如何执行此操作?一种简单的方法是创建SELECT语句以生成UPDATE语句: SELECT CONCAT('UPDATE home_pro

我在表中有一个
id
缩写
列。我想更新另一台服务器上另一个数据库中的
缩写
列。。我知道如何获取SQLSELECT语句,但是如何从中获取在另一个数据库上运行的UPDATE语句呢

基本上,我想得到如下结果:

UPDATE table SET abbrv=x WHERE id=1;
UPDATE table SET abbrv=y WHERE id=2;


如何执行此操作?

一种简单的方法是创建SELECT语句以生成UPDATE语句:

SELECT 
    CONCAT('UPDATE home_provider SET abbrv="', abbrv, '" WHERE id=', id, ';')
FROM home_provider
这将为您提供:

UPDATE home_provider SET abrv="ACA" WHERE id=1;
UPDATE home_provider SET abrv="ALL" WHERE id=2;
UPDATE home_provider SET abrv="ARK" WHERE id=3;
UPDATE home_provider SET abrv="ART" WHERE id=4;
...

假设两个数据库之间存在信任关系,则可以使用联接执行更新:

UPDATE target
SET target.abbrv = source.abbrv
FROM db1.dbo.table1 target
INNER JOIN db2.dbo.table1 source ON target.id = source.id
在上面的示例中,db1将是目标数据库(更新信息的地方),db2是源数据库(复制数据的地方),当然,需要更改table1以反映表的实际名称

如果需要,还可以包括where子句

UPDATE target
SET target.abbrv = source.abbrv
FROM db1.dbo.table1 target
INNER JOIN db2.dbo.table1 source ON target.id = source.id
WHERE target.id in (1,2,3,5)
如果数据库位于不同的服务器上:

UPDATE target
SET target.abbrv = source.abbrv
FROM servara.db1.dbo.table1 target
INNER JOIN serverb.db2.dbo.table1 source ON target.id = source.id

您可以发誓只需执行以下操作:从servera.dbo.table tbs更新target SET abbrv=缩写,其中target.ID=tbs。ID@Dylan是的,但是您需要内部连接。where子句仅适用于您希望将更新限制为特定记录子集的情况,否则,对于源和目标之间的每个匹配表,它都将被更新。下面是一个SQLFIDLE来演示这个概念:不确定我是否正确地共享了fiddle(我两天前刚刚找到这个站点)