我有一个查询,使用主键和外键关系更新列中的所有行,但错误是:
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
如果Fk_RegId(表2)与Pk_RegID(表1)相同,我必须从表1更新DOCID ......
请帮帮我。谢谢!
答案 0 :(得分:1)
使用以下查询。
UPDATE t
SET t.DOCID=p.DOCID
FROM T_OP t
JOIN T_Reg_Patients p ON p.Pk_RegID=t.Fk_RegID
答案 1 :(得分: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
?
答案 2 :(得分:0)
Update t2
set t2.docid=t1.DocID
from
T_Reg_Patients t1 join t_op t2 on
t2.Fk_RegID=t1.Pk_RegID
答案 3 :(得分:0)
UPDATE table
SET t.DOCID=p.DOCID
FROM T_OP t
JOIN T_Reg_Patients p ON p.Pk_RegID=t.Fk_RegID
答案 4 :(得分:0)
在Mysql中,您可以使用-
Update table2 t2 join table1 t1
on t2.Fk_RegID = t1.Pk_RegID
set t2.DOCID = t1.DocID;