2016-09-21 22 views
1

我有一個查詢使用的主鍵和外鍵關係更新列中的所有行,但錯誤的是:更新列中的所有表中的行從另一個表的使用主鍵和外鍵

Msg 512,Level 16,State 1,Line 1

子查詢返回的值超過1。當 子查詢遵循=,!=,<,< =,>,> =或當子查詢用作 表達式時,這是不允許的。該語句已終止。

我的查詢是:

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 

我不得不從表1更新DOCID如果Fk_RegId(在表2)與Pk_RegID(In表1)...

請幫幫我。謝謝!

+1

你說table1和table2,但查詢有T_OP和Reg_Patients ...堅持同名!同時向我們展示更新後的預期表格數據。 – jarlh

+0

謝謝你爲我的郵件加入爲我工作.... – 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 
相關問題