我有一个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";

但你不应该这么做。在相关表中存储数据副本这不是一个好的数据库设计。你总是可以通过连接两个表来获得这些信息。

10-08 12:15