2014-07-10 31 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;