Postgres连接将新添加的列填充到映射表

时间:2014-07-10 17:35:31

标签: sql postgresql sql-update inner-join outer-join

我需要一个postgres SQL更新语句,因为我将一个列NAME添加到DATA_MAP_TABLE,我需要在第一次运行更新时填充它以匹配关联的值。 DATA_TABLE中的某些值在其ID和BINARY_MESS的内容中是唯一的,但具有相同的名称。客户4和5都指向它们中的一些,有些是5唯一但共享NAME标签。填充新列后,我将添加一个非空约束。我没有设计这个...我只是想实现一个更新的解决方案..不要拍我......任何和所有帮助都将非常感激!!

    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

1 个答案:

答案 0 :(得分: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;