postgresql正在从包含数据的同一列更新包含NULL的列
表名:postgresql正在从包含数据的同一列更新包含NULL的列,sql,postgresql,sql-update,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
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
我得到的关系不存在
我做错了什么?我认为相关子查询可能是一种方法:
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;
注意:对于给定的名称
,如果年龄
位于多行原始数据上,则会生成错误
如果性能是一个问题,您需要在mytable(name,age)
上建立索引
是一个dbfiddle示例。尝试此查询
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
我建议在where子句中连接这些表,否则会产生笛卡尔积。我运行了10分钟,一小时后仍然运行,但没有更新anything@user2934524 . . . 代码是有效的。我举了一个例子。我唯一的问题是为什么要限制1@user2934524因为在您的表中,Group=A可能有几行。例如,表中包含这些行(A,10),(A,20)。因此,限制1只选择一行值为10的行。