【问题标题】:updating a column in one table with value extracted from other table使用从另一个表中提取的值更新一个表中的列
【发布时间】:2014-03-12 03:18:47
【问题描述】:

我在两个表中选择电子邮件,如下所示:

select email 
from table1 
inner join table2 on table1.person_id = table2.id and table2.contact_id is null;

现在我在 table2 中有一个名为 email 的列

我想用上面选择的电子邮件值更新 table2 的 email 列。

请告诉我使用 POSTGRES 的选择 sql 语法的更新

编辑:

我不想发布另一个问题。所以我在这里问:

上面的 select 语句返回多行。我真正想要的是:

update table2.email 
    if table2.contact_id is null with table1.email
    where table1.person_id = table2.id

我不知道该怎么做。我上面的选择语句似乎不正确。

请帮忙。

我可能已经找到了解决方案:

Update a column of a table with a column of another table in PostgreSQL

【问题讨论】:

标签: sql postgresql


【解决方案1】:

您是否尝试过类似的方法:

UPDATE table2 SET
email = (SELECT email 
         FROM table1 
         INNER JOIN table2 ON table1.person_id = table2.id AND table2.contact_id IS NULL)
WHERE ...

【讨论】:

    【解决方案2】:
    UPDATE Table2
         SET  email = 
                (SELECT 
                     email
                 FROM 
                     table1 
                  JOIN 
                      table2 
                   ON 
                      table1.person_id = table2.id 
                   WHERE 
                       table2.contact_id is null) dt
          WHERE 
             <<SOME CONDITION THAT ISOLATES WHICH ROWS YOU WANT TO UPDATE >>
    

    【讨论】:

      【解决方案3】:

      我正在寻找以下解决方案。

      Update a column of a table with a column of another table in PostgreSQL

      更新 table2 t2

      SET    val2 = t1.val1
      FROM   table1 t1
      WHERE  t2.table2_id = t1.table2_id
      AND    t2.val2 IS DISTINCT FROM t1.val1  -- to avoid empty updates
      

      【讨论】:

        猜你喜欢
        • 2021-10-16
        • 1970-01-01
        • 2012-08-02
        • 2020-03-18
        • 1970-01-01
        • 2010-10-21
        • 2019-12-21
        • 1970-01-01
        相关资源
        最近更新 更多