2016-04-20 8 views
1

を持っているのに参加するとき、テーブル内の更新複数の列これは、これまでの私のコードです: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

複数の 'C.TYPEID 'を更新したい場合、同じ更新クエリを使用したい場合は、 WHERE句を削除しないでください。または、どこにc.TYPEID in( '1111'、 '2222')と変更してください。 – DhruvJoshi

答えて

0

あなたの更新値は、両方のレコードに対して同じであるならば、あなただけのどこ注

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のために良いホールドこの良い場合にのみ、 。

ありがとうございました

+0

TYPEID列の値は、電話機の電話番号のタイプをPHONEテーブルに示します。そこでA.Mobile(PHONEテーブルでTYPEID '2222'と表示されている電話番号)を更新したいのですが、A.TollFree(PHONEテーブルにTYPEID '1111'で示されている電話番号)を更新したいとします。 2つの電話番号は異なります。 – user2317801

+0

Hmmm私は以下の有線方式を持っていますが、これが正しい方法であるかどうかは不明ですが、あなたの要件を確実に満たす**アップデート セット A.NAME = B.NAME、 A.MOBILE = C.COMPANYID = C.COMPANYIDの場合、C.MOBILEを選択します。B.COMPANYID = C.COMPANYID where Typeid = '1111') A.TOLLFREE =(C.COMPANYID = C.COMPANYIDのアカウントaにPHONE CのC.NUMBERVALUEを選択します。タイプID = '2222') アカウントAから 内部結合COMPANY B on aCOMPANYID = B.COMPANYI ** –

関連する問題