我想从另一列中具有相同值的行更新具有相同列值的列(如果为NULL)(假设此行存在且它是唯一的)。在下面的示例中,Order_ID = 2具有NULL Group_ID。查询应插入(唯一)行的Group_ID,该行在Quantity列中具有相同的值。 (这是一个简化的例子。真正的表有30列和900'000行)。
Order_ID Price Quantity Group_ID
1 10 15 345
2 21 15 NULL
所以预期的输出是:
Order_ID Price Quantity Group_ID
1 10 15 345
2 21 15 345
我尝试了这个查询,但它显然卡住了,我必须停止它(下班后):
update My_Table t1
set Group_ID=(select t2.Group_ID
from My_Table t1 inner join My_Table t2
on
t1.Quantity = t2.Quantity
where t1.Group_ID is not NULL and t2.Group_ID is NULL)
答案 0 :(得分:0)
这会将group_id设置为第一个记录中与所选数量相同的group_id值。
update table t1
set group_id = (select group_id from table t2
where t1.quantity=t2.quantity
and t2.group_id is not null
and rownum=1)
where group_id is null