繁体   English   中英

SQL Server使用另一个表中的列更新一个表中的列

[英]SQL Server Updating a column in one table with column from another

菜鸟SQL问题在这里。 我在SQL Server 2012中有一个数据库,并且可以访问包含我想提取的信息的另一个MySQL数据库。

我想更新一个代表工作站数量的列,该信息存在于另一个数据库中。 我想构建一个查询,以更新每个数据库中型号匹配的所有项目的数量。

我将包含两个select语句来演示我想使用的内容。

我要从另一个数据库中提取的数据。

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

哪个产生这个结果

在此处输入图片说明

我要更新的数据库。

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

哪个产生这个结果

在此处输入图片说明

这些模型将在我的数据库中更新,以确保模型名称彼此对应,但是在此期间,我想使用M93z测试查询。 那么,使用模型名称相同的其他数据库中的#个工作站更新数据库中NumofDevices的最理想方法是什么?

抱歉,如果这是一个显而易见的问题,我仍然是SQL菜鸟,对这类事情,我还是不直观。

编辑:最终目标是通过SQL Server Agent计划的作业定期每晚更新所有工作站数量,但是当我遇到它时,我将跨越那座桥(我实际上相信我将能够将查询解决方案应用于这项工作一经确定就可以解决),但如果此信息更改了您的任何建议,我想将其包括在内。

您可以在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 在这种情况下,请问另一个问题,因为该问题专门与更新有关。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM