2016-09-21 8 views
1

私は、プライマリおよび外部キー関係を使用して列内のすべての行を更新するクエリを持っていますが、エラーは次のとおりです。更新列

メッセージ512、レベル16、状態1、行1

サブクエリが2つ以上の値を返しました。 サブクエリが、=、!<、< =、>、> =、またはサブクエリが式 として使用されている場合は、これは許可されません。ステートメントは終了されました。

私のクエリは次のとおりです。

Update T_OP 
    Set DOCID = (Select DocID from T_Reg_Patients) 
where Fk_RegID = (Select Pk_RegID from T_Reg_Patients) 

Table1

Pk_RegID Name DocID 
1   Sam  1 
2   Sam2  2 
3   Sam3  3 
4   Sam4  4 

Table 2

Pk_OPID Fk_RegID Name DOCID 
1   1   Sam NULL 
2   2   Sam2 NULL 
3   3   Sam3 NULL 
4   4   Sam4 NULL 

私はFk_RegId場合(表1からDOCIDを更新する必要があります表2)は、Pk_RegID(In表1)...

私を助けてください。ありがとうございました!

+1

あなたはtable1とtable2と言うが、クエリにはT_OPとReg_Patientsがあります...同じ名前に固執してください!また、更新後に期待される表データも表示してください。 – jarlh

+0

ur messegeに参加してくれてありがとうございました。 – Raviteja

答えて

0

以下のクエリを使用してください。

UPDATE t 
SET t.DOCID=p.DOCID 
FROM T_OP t 
    JOIN T_Reg_Patients p ON p.Pk_RegID=t.Fk_RegID 
0
Update t2 
set t2.docid=t1.DocID 
from 
T_Reg_Patients t1 join t_op t2 on 
t2.Fk_RegID=t1.Pk_RegID 
1

使用JOIN代わり:

Update T_OP 
    Set docid = rp.DocID 
    from t_op o JOIN 
     T_Reg_Patients rp 
     on o.Fk_RegID = rp.Pk_RegID; 

しかし、両方のテーブルにDocIDを保管する必要はおそらくありません。なぜ値を取得する必要があるときにJOINを使用しないのですか?

0
UPDATE table 
SET t.DOCID=p.DOCID 
FROM T_OP t 
    JOIN T_Reg_Patients p ON p.Pk_RegID=t.Fk_RegID