PostgreSQL从同一列更新NULL

时间:2018-10-22 18:30:14

标签: sql postgresql sql-update

表名:myTable,我需要在同一列中用Null更新A的值

Group      Value
A            10
A            NULL
A            NULL
A            10
B            20
B            20
B            20
C            30  

预期:

Group      Value
A            10
A            10
A            10
A            10
B            20
B            20
B            20
C            30

我的查询:

Update myTable
Set myTable.Age = b.Age
FROM myTable b
WHERE A.Age is Null

我得到relation doesn't exist

我在做什么错了?

2 个答案:

答案 0 :(得分:0)

我认为相关子查询可能是解决方法:

update myTable t
    set Age = (select t2.Age from mytable t2 where t2.name = t.name and t2.Age is not null)
    where t.Age is Null;

注意:如果age位于给定name的原始数据的多行中,则会产生错误。

如果性能是一个问题,则需要在mytable(name, age)上建立索引。

Here是一个db <>小提琴示例。

答案 1 :(得分:0)

尝试此查询

UPDATE myTable SET Age = 
    (SELECT b.Age 
     FROM myTable b 
     WHERE b.Group = myTable.Group AND  b.Age IS NOT NULL
     LIMIT 1) 
WHERE Age IS NULL