none
以下两种更新语句一样吗? RRS feed

  • 问题

  • 两个表的关系 Adm_ID 对应 CompanyID,Adm_Guid 对应 CompanyGuid,但是 CustomerInfo 表CompanyGuid都是NULL

    SELECT 
    c.CompanyId,c.CompanyGuid,
    a.Adm_ID,a.Adm_Guid
    FROM dbo.CustomerInfo c
    INNER JOIN dbo.Fanj_Admin a ON c.CompanyId=a.Adm_ID
    WHERE CompanyGuid IS NULL

    更新一

    UPDATE dbo.CustomerInfo SET CompanyGuid=Adm_Guid
    from dbo.Fanj_Admin 
    WHERE CompanyGuid IS NULL AND CompanyId=Adm_ID

    更新语句二
    UPDATE a SET a.CompanyGuid=b.Adm_Guid
    FROM dbo.CustomerInfo a ,dbo.Fanj_Admin b 
    WHERE a.CompanyId=b.Adm_ID
    AND CompanyGuid IS NULL

    目前测试2个执行效果一样,但是不知道为什么,请教大神解析

    开心了就笑,不开心了就过会儿再笑

    2015年12月23日 11:04

答案

  • 2/3 一样不难道理解,就条件顺序的差别而忆,这个不会导致结果不一样

    理解了2/3,那么1一样也能够理解了,join on CompanyId=Adm_ID 效果和 where CompanyId=Adm_ID 一样, 这个结果出来之后再 CompanyGuid IS NULL 过滤一下,那么结果自然和 2/3一样

    你可以对比 3 个语句的执行执行计划,应该是一样的

    • 已标记为答案 NewJoin 2015年12月24日 3:17
    2015年12月24日 1:33

全部回复

  • 2/3 一样不难道理解,就条件顺序的差别而忆,这个不会导致结果不一样

    理解了2/3,那么1一样也能够理解了,join on CompanyId=Adm_ID 效果和 where CompanyId=Adm_ID 一样, 这个结果出来之后再 CompanyGuid IS NULL 过滤一下,那么结果自然和 2/3一样

    你可以对比 3 个语句的执行执行计划,应该是一样的

    • 已标记为答案 NewJoin 2015年12月24日 3:17
    2015年12月24日 1:33
  • 好的,我用执行计划看一下,我就是不明白 2个更新语句的区别,所以疑惑

    开心了就笑,不开心了就过会儿再笑

    2015年12月24日 3:17