繁体   English   中英

使用主键和外键从另一个表更新表中所有行的列

[英]Update Column Of All Rows In A Table From Another Table Using Primary Key And Foreign Key

我有一个查询,使用主键和外键关系来更新列中的所有行,但错误是:

消息512,级别16,状态1,第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。

请帮我。 谢谢!

使用以下查询。

 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 为什么在需要获取值时不只使用JOIN

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

在Mysql中,您可以使用-

Update table2 t2 join table1 t1
on t2.Fk_RegID = t1.Pk_RegID
set t2.DOCID = t1.DocID;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM