簡體   English   中英

Postgres在循環中更新記錄

[英]Postgres Update Records in Loop

我有一個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 

如何更新DEPTCODEEmployee通過查詢表DEPTCODEDepartment表?

我試過這個;

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";

但你不應該真的這樣做。 在相關表中存儲數據副本不是一個好的數據庫設計。 您始終可以通過連接兩個表來獲取該信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM