SELECT语句的SQL UPDATE语句?

时间:2013-12-30 22:56:18

标签: mysql sql sequelpro

我在表格中有idabbreviation列。我想更新另一台服务器上另一个数据库中的abbreviation列。我知道如何获取SQL select语句,但是如何从中获取一个UPDATE语句以便在另一个数据库上运行?

基本上我想得到类似的东西:

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

...

我该怎么做?

2 个答案:

答案 0 :(得分:0)

一种简单的方法是创建一个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;
...

答案 1 :(得分:0)

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

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