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

SQL Server使用一个表中的列更新另一个表中的列,sql,sql-server,sql-server-2012,Sql,Sql Server,Sql Server 2012,这里没有问题。我在SQLServer2012中有一个数据库,可以访问另一个MySQL数据库,其中包含我想提取的信息 我想更新一个表示工作站数量的列,该信息显示在另一个数据库中。我想构造一个查询,更新每个数据库中型号匹配的所有项目的数量 我将包括两个select语句来演示我希望使用的内容 我想从另一个数据库中提取数据 SELECT * FROM OPENQUERY(S3MONITOR, 'SELECT count(BuildDriver) AS ''# of Workstations'', B

这里没有问题。我在SQLServer2012中有一个数据库,可以访问另一个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测试一个查询。那么,在模型名称相同的情况下,使用其他数据库中的工作站更新数据库中的NUMOF设备的最理想方式是什么呢

很抱歉,如果这是一个明显的问题,我仍然是一个SQLNoob,当涉及到这类事情时,这对我来说仍然不是直观的

编辑:最终目标是通过SQL Server代理计划的作业,每晚例行更新所有工作站数量,但我会跨越这一桥梁,当我遇到它时,我实际上有一些信心,一旦找到它,我就能够将查询解决方案应用于此作业,但我希望在它发生变化时包含此信息您的任何建议。

您可以在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';

注意:这将更新表中已有的值。如果还想添加新行,可能需要使用“合并”。如果是这种情况,请问另一个问题,因为这个问题是专门关于更新的。

Beauty,我午餐回来后会带着这个进行试驾。不,我不想添加新行或任何东西,所以看起来好像你直接回答了我的问题。非常感谢你!除了更改一些列名外,这种方法非常有效。再次感谢你。