繁体   English   中英

SELECT语句中的SQL UPDATE语句?

[英]SQL UPDATE statement from SELECT statement?

我在表中有一个idabbreviation列。 我想更新另一台服务器上另一个数据库中的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM