使用相关表中的值更新表

爵士乐

我有两个表,UsersCompany

我想从一个传输值Active列在Users表中的ActiveCompany表,其中CompanyID在比赛中ID

这是一个示例表。它有成千上万行的,还有在1间之间的关系是1CompanyUsers

Users:
CompanyID    Active
458          1
685          1
58           0

Company:
ID           Active
5            Null
3            Null
58           Null
685          Null

最终Company表应该看起来像这样,其中的Null已被Users表中的值替换

Company:
ID           Active
5            Null
3            Null
58           0
685          1
皮匠

您可以简单地执行一个在两个表之间UPDATE使用a的操作JOIN,如下所示:

UPDATE c
SET Active = u.Active
FROM Company c
INNER JOIN Users u ON u.CompanyId = c.ID

完整的工作示例代码:

CREATE TABLE #Users
    (
      CompanyId INT ,
      Active BIT
    )

INSERT  INTO #Users
        ( CompanyId, Active )
VALUES  ( 458, 1 ),
        ( 685, 1 ),
        ( 58, 0 )

CREATE TABLE #Company
    (
      ID INT ,
      Active BIT
    )

INSERT  INTO #Company
        ( ID, Active )
VALUES  ( 5, NULL ),
         ( 3, NULL ),
         ( 58, NULL ),
         ( 685, NULL )

UPDATE c
SET Active = u.Active
FROM #Company c
INNER JOIN #Users u ON u.CompanyId = c.ID

SELECT * FROM #Company

DROP TABLE #Users
DROP TABLE #Company 

您会注意到UPDATE示例代码中的语句使用别名cu引用了两个表。

警告:

正如评论指出,这是假定你永远只能之间有1对1的关系CompanyUsers如果分配给同一公司的用户不止一个,则需要过滤Users来选择您要使用的用户,否则您可能会得到意想不到的结果。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章