SQL UPDATE SELECT 与 WHERE

新手上路,请多包涵

我想 UPDATE 表中的一列,但在每一行中,必须有另一个值取决于另一行的 WHERE

这就是桌子的样子。

业务单元GUID |类名 |默认GUID

     5        | PriceList | 349FDAFD34M
    5        | Footer1   | 987IOXG376L
    5        | Header1   | 12WQX954MIO
    7        | PriceList | NULL
    7        | Footer1   | NULL
    7        | Header1   | NULL

结果应该是这样的。

业务单元GUID |类名 |默认GUID

     5        | PriceList | 349FDAFD34M
    5        | Footer1   | 987IOXG376L
    5        | Header1   | 12WQX954MIO
    7        | PriceList | 349FDAFD34M
    7        | Footer1   | 987IOXG376L
    7        | Header1   | 12WQX954MIO

但是这个显示的查询不起作用,因为它返回很多行,所以它不精确。

 update cSC_BusinessUnit
set defaultguid =
    (
    select defaultguid
    from cSC_BusinessUnit
    where BusinessUnitGUID = 5
    )
where BusinessUnitGUID = 7

原文由 user1673665 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 656
2 个回答

您还需要检查 ClassName :

 update b1
set b1.defaultguid =
    (
    select b2.defaultguid
    from cSC_BusinessUnit b2
    where b2.BusinessUnitGUID = 5
        AND b2.ClassName = b1.ClassName
    )
from cSC_BusinessUnit b1
where b1.BusinessUnitGUID = 7

原文由 waka 发布,翻译遵循 CC BY-SA 3.0 许可协议

也使用以下简短版本

UPDATE  b1
SET     b1.defaultguid = b2.defaultguid
FROM    cSC_BusinessUnit b1
        JOIN
        cSC_BusinessUnit b2
            ON b1.ClassName = b2.ClassName
                And b2.BusinessUnitGUID = 5
WHERE   b1.BusinessUnitGUID = 7

原文由 Aman Prajapati 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进