2014-07-10 55 views
-1

我需要一個postgres SQL更新語句,因爲我將一個列NAME添加到DATA_MAP_TABLE,我需要在第一次運行更新時填充它以匹配關聯的值。 DATA_TABLE中的一些值在其ID和BINARY_MESS的內容中是唯一的,但具有相同的名稱其中一些是由客戶4和5指向的,其中一些對於5是唯一的,但共享NAME標籤。新列填充後,我將添加一個非空約束。我沒有設計這..我只是試圖實施更新的解決方案..不要開槍我..任何和所有的幫助將非常感謝!Postgres加入填充新添加的列到映射表

DATA_TABLE 
    ID NAME DATA 
    1 A <BIN_MESS> 
    2 B <BIN_MESS> 
    3 C <BIN_MESS> 
    4 D <BIN_MESS> 
    5 E <BIN_MESS> 
    6 F <BIN_MESS> 
    7 A <BIN_MESS> 
    8 D <BIN_MESS> 

    DATA_MAP_TABLE 
    ID DATA_ID CUST_ID 
    1 1  4 
    2 2  4 
    3 3  4 
    4 4  4 
    5 5  4 
    6 6  4 
    7 1  5 
    8 8  5 
    9 2  5 
    10 7  5 
+0

,因爲我問一個問題..然後幾個小時後實現了答案,並張貼我得到了低估。 – JoGotta

回答

0

有時只需看到它在一個假設的方式佈置看到了解決方案:

ALTER TABLE DATA_MAP_TABLE ADD column name character varying(3); 
Update DATA_MAP_TABLE SET name = (
    Select name from DATA_TABLE where DATA_TABLE.id = DATA_MAP_TABLE.DATA_ID; 
); 
ALTER TABLE DATA_MAP_TABLE ALTER COLUMN "name" SET not null;