根据另一个数据库中的子查询更新表值

时间:2017-08-24 23:00:09

标签: sql sql-server vba sql-server-2008

我尝试动态子查询另一个数据库(db2)并根据结果更新当前表(db1.t1)。字段位置(db1.t1.location)确定应该是哪个数据库(db2)。我通常使用vba完成此操作,但是,我循环遍历每一行。很简单,我100%sql等效将更有效。

我想做的是拥有2个数据库

  1. DB1

  2. DB2(根据DB1中的值选择数据库)

  3. e.g。如果db1.dbo.t1.location =' North'那么DB2 name =' DBNorth',如果db1.dbo.t1.location =' South'那么DB2名称=' DBSouth'。

    不确定从何处开始加入/更新字段。

    以下是我想要完成的事情:

    • 根据db1.dbo.t1行中的值建立要连接的数据库
    • 根据位置连接数据库,unique_identifier(db1.dbo.t1.location, db1.dbo.t1.unique_identifer)
    • 如果db2中存在包含位置的记录,则db1中的唯一标识符 将db1.dbo.t1.status更新为1 else 0

    感谢所有帮助!

2 个答案:

答案 0 :(得分:0)

我认为你不能加入数据库(虽然我不是100%肯定)......但是 要使用不同数据库中的表,可以使用dbname..tablename。 所以你可以内心加入他们。 也许你可以试试:

select * from db1..t1 d1 inner join db2..t1 d2 on d1.location=d2.location

并且在您的情况下,由于数据库名称在数据库db1中,您可以先将它们提取到临时表,然后遍历临时表,在循环中更新数据

答案 1 :(得分:-1)

您可以使用字符串构建查询并使用exec执行它。