2017-08-24 86 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,您可以先將其解壓縮到一個臨時表,然後通過臨時表循環,在更新數據循環

相關問題