我有一个 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
如何通过查询 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";
但你真的不应该这样做。在相关表中存储数据副本不是一个好的数据库设计。您始终可以通过连接两个表来获取该信息。
关于sql - Postgres 循环更新记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51483440/