Postgres 循环更新记录
Postgres Update Records in Loop
我有一个 Employee
table,其中 DEPTCODE
为空。
ID NAME AGE DEPTID DEPTCODE
---- ---------- ----- ---------- -------
1 Paul 32 2
2 Allen 25 1
还有一个 Department
table 这样的:
ID DEPTNAME DEPTCODE
---- ---------- -----
1 HR DEP-01
2 ADMIN DEP-02
如何通过从 Department
table 查询 DEPTCODE
来更新 Employee
table 中的 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";
但你真的不应该这样做。在相关表中存储数据副本不是一个好的数据库设计。您始终可以通过连接两个表来获取该信息。
我有一个 Employee
table,其中 DEPTCODE
为空。
ID NAME AGE DEPTID DEPTCODE
---- ---------- ----- ---------- -------
1 Paul 32 2
2 Allen 25 1
还有一个 Department
table 这样的:
ID DEPTNAME DEPTCODE
---- ---------- -----
1 HR DEP-01
2 ADMIN DEP-02
如何通过从 Department
table 查询 DEPTCODE
来更新 Employee
table 中的 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";
但你真的不应该这样做。在相关表中存储数据副本不是一个好的数据库设计。您始终可以通过连接两个表来获取该信息。