2017-03-14 49 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

相关问题