我有一个Employee
表,其中DEPTCODE
为空。
ID NAME AGE DEPTID DEPTCODE
---- ---------- ----- ---------- -------
1 Paul 32 2
2 Allen 25 1
还有一张这样的桌子:
ID DEPTNAME DEPTCODE
---- ---------- -----
1 HR DEP-01
2 ADMIN DEP-02
如何通过从
Department
表查询DEPTCODE
来更新Employee
表中的DEPTCODE
?我试过了;
DO $$
BEGIN
FOR depart IN
SELECT * FROM schema."Department"
LOOP
Update table schema."Employee" set "DEPTCODE"=depart."DEPTCODE"
where "DEPTID"=depart."ID";
END LOOP;
END; $$
最佳答案
不需要循环。Postgres允许在UPDATE语句中联接两个表:
update "Employee" e
set "DEPTCODE"=depart."DEPTCODE"
from "Department" depart
where e."DEPTID"=depart."ID";
但你不应该这么做。在相关表中存储数据副本这不是一个好的数据库设计。你总是可以通过连接两个表来获得这些信息。