SQL Server - 当join的where子句具有互斥条件时,更新表中的多个列

时间:2016-04-20 03:55:21

标签: sql sql-server

到目前为止,这是我的代码:

update 
    A
set 
    A.NAME= B.NAME,
    A.MOBILE = C.MOBILE
    A.TOLLFREE = C.NUMBERVALUE 
from ACCOUNT A
    inner join COMPANY B on a.COMPANYID = B.COMPANYID
    inner join PHONE C on B.COMPANYID = C.COMPANYID
where c.TYPEID = '1111'  

这个想法是C.TYPEID有几个代码。

  • 1111是tollfree手机
  • 2222是手机

我想写一个声明,更新所有不同的电话栏类型,免费电话C.TypeID为1111,移动电话C.TYPEID为2222。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

如果两个记录的更新值相同,那么您只需要更改update语句的where条件,如下所示

update 
A
set 
A.NAME= B.NAME,
A.MOBILE = C.MOBILE
A.TOLLFREE = C.NUMBERVALUE 
from ACCOUNT A
inner join COMPANY B on a.COMPANYID = B.COMPANYID
inner join PHONE C on B.COMPANYID = C.COMPANYID
where c.TYPEID in ('1111', ' 2222')

注意:只有当您更新的值对两个TypeID都有效时,这才有用。

谢谢