2017-08-24 97 views
0

我想基于结果动态子查询另一个数据库(db2)并更新当前表(db1.t1)。字段Location(db1.t1.location)决定哪个数据库(db2)应该是。我通常使用vba完成此操作,但是我正在循环每一行。很简单,我是100%的SQL等效将更有效率。基于来自另一个数据库的子查询更新表值

我想什么做的是有2个数据库

  1. DB1

  2. DB2(其中该数据库将基于在DB1值来选择)

例如如果db1.dbo.t1.location ='North',那么DB2名称='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否则为0
独特IDENTIFER

所有帮助表示赞赏!

回答

-1

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

+0

你能提供一个例子吗? –

+0

请参阅https://stackoverflow.com/questions/25615901/exec-to-use-database – Ian

+0

@Ian您能否根据我提供的信息提供更多方向?对SQL中的变量没有做太多的工作。 – BIGTONE559

0

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

select * from db1..t1 d1 inner join db2..t1 d2 on d1.location=d2.location 
你的情况

而且,作为数据库名是数据库DB1,您可以先将其解压缩到一个临时表,然后通过临时表循环,在更新数据循环

相关问题