[英]SQL UPDATE statement from SELECT statement?
我在表中有一个id
和abbreviation
列。 我想更新另一台服务器上另一个数据库中的abbreviation
列。我知道如何获取SQL select语句,但是如何从中获取一条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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.