Sql 使用主键和外键从另一个表更新表中所有行的列
我有一个使用主键和外键关系更新列中所有行的查询,但错误是: Msg 512,16级,状态1,第1行 子查询返回了多个值。这是不允许的,因为 子查询后面是=,!=,=或者当子查询用作 表情。声明已终止 我的问题是:Sql 使用主键和外键从另一个表更新表中所有行的列,sql,sql-server,Sql,Sql Server,我有一个使用主键和外键关系更新列中所有行的查询,但错误是: Msg 512,16级,状态1,第1行 子查询返回了多个值。这是不允许的,因为 子查询后面是=,!=,=或者当子查询用作 表情。声明已终止 我的问题是: Update T_OP Set DOCID = (Select DocID from T_Reg_Patients) where Fk_RegID = (Select Pk_RegID from T_Reg_Patients) 表1: Pk_RegID Name
Update T_OP
Set DOCID = (Select DocID from T_Reg_Patients)
where Fk_RegID = (Select Pk_RegID from T_Reg_Patients)
表1
:
Pk_RegID Name DocID
1 Sam 1
2 Sam2 2
3 Sam3 3
4 Sam4 4
表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
请帮帮我。谢谢大家! 使用下面的查询
UPDATE t
SET t.DOCID=p.DOCID
FROM T_OP t
JOIN T_Reg_Patients p ON p.Pk_RegID=t.Fk_RegID
改为使用
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
。当您需要获取值时,为什么不直接使用连接呢?在Mysql中,您可以使用-
UPDATE table
SET t.DOCID=p.DOCID
FROM T_OP t
JOIN T_Reg_Patients p ON p.Pk_RegID=t.Fk_RegID
Update table2 t2 join table1 t1
on t2.Fk_RegID = t1.Pk_RegID
set t2.DOCID = t1.DocID;
您说的是表1和表2,但查询中有T_OP和Reg_Patients。。。坚持用同一个名字!还向我们显示更新后的预期表数据。感谢您的messege join为我工作。。。。
Update table2 t2 join table1 t1
on t2.Fk_RegID = t1.Pk_RegID
set t2.DOCID = t1.DocID;