2017-03-14 53 views
0

noob SQL問題在這裏。我在SQL Server 2012中有一個數據庫,並使用我想要提取的信息訪問另一個MySQL數據庫。SQL Server更新一列中的列與另一列

我想更新表示工作站數量的列,並且該信息存在於另一個數據庫上。我想構建一個查詢,以更新每個數據庫中匹配模型號的所有項目的數量。

我將包含兩個select語句來演示我想要使用的語句。

來自其他數據庫的數據我想從中提取。

SELECT * 
FROM OPENQUERY(S3MONITOR, 
'SELECT count(BuildDriver) AS ''# of Workstations'', BuildDriver AS ''Workstation Model'' 
FROM workstation 
GROUP BY BuildDriver') 

將會產生這樣的結果

enter image description here

我的數據庫,我想更新。

SELECT NumOfDevices, Model 
FROM dbo.Currency 
INNER JOIN dbo.SubCategory 
ON Currency.SubCategoryId = SubCategory.SubCategoryId 
WHERE SubCategory.SubCategoryName = 'WorkStation'; 

將會產生這樣的結果

enter image description here

該車型將在我的數據庫進行更新,以確保型號名稱相互對應,但在此期間,我想用測試查詢M93z。那麼使用另一個數據庫中的工作站數量來更新數據庫中NumofDevices的最理想方式是什麼?

對不起,如果這是一個明顯的問題,我仍然是一個SQL noob,它對我來說仍然不直觀,當涉及到這些事情。

編輯:最終目標是例行夜間通過SQL Server代理計劃作業更新所有工作站的數量,但我會船到橋頭時,我來給它(其實我有一些信心,我能申請查詢解決方案一旦找到這個工作),但我想包含這些信息,如果它改變你的任何建議。

回答

1

您可以在update聲明中使用join

with newvals as (
     SELECT * 
     FROM OPENQUERY(S3MONITOR, 
'SELECT count(BuildDriver) AS ''# of Workstations'', BuildDriver AS ''Workstation Model'' 
FROM workstation 
GROUP BY BuildDriver' 
        ) oq 
    ) 
update c 
    set NumOfDevices = newvals.num_workstations 
    from dbo.Currency c join 
     dbo.SubCategory sc 
     on c.SubCategoryId = sc.SubCategoryId join 
     newvals 
     on newvals.model = c.model 
where sc.SubCategoryName = 'WorkStation'; 

注意:這會更新表中的值。如果您還想添加新行,則可能需要使用merge。如果是這種情況,請提出另一個問題,因爲這個問題具體是關於更新。

+0

美麗的,當我從午餐回來的時候,我會試試這個試駕。不,我不會尋找添加新的行或任何東西,所以它看起來好像你直接解決了我的問題。非常感謝! – David

+0

除了更改某些列名稱之外,它可以很好地工作。再次感謝你。 – David

相關問題