我有一个Employee
表,其中DEPTCODE
为空。
ID NAME AGE DEPTID DEPTCODE
---- ---------- ----- ---------- -------
1 Paul 32 2
2 Allen 25 1
还有一个Department
表,如下所示:
ID DEPTNAME DEPTCODE
---- ---------- -----
1 HR DEP-01
2 ADMIN DEP-02
如何通过从DEPTCODE
表中查询Employee
来更新DEPTCODE
表中的Department
?
我已经尝试过了
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; $$
答案 0 :(得分:3)
不需要循环。 Postgres允许在UPDATE语句中联接两个表:
update "Employee" e
set "DEPTCODE"=depart."DEPTCODE"
from "Department" depart
where e."DEPTID"=depart."ID";
但是您不应该这样做。将数据副本存储在相关表中并不是一个好的数据库设计。始终可以通过将两个表结合在一起来获取该信息。