我有以下问题(见下图)。
我有一张桌子,里面有村庄之间的交通费用。 来源是交通开始的村庄。目标是运输结束的村庄。
从1号村到2号村的运输费用与从2号村到1号村的运输费用不同。
现在我确实有相反的成本数字,但在另一行(见图)。
现在我想将村庄2到1的运输成本添加到reverse costs
栏中。
由于我有大约7000个关系,因此无法手动完成。请通过SQL查询建议如何操作。
答案 0 :(得分:1)
您可以在自加入中使用更新查询,如下所示
update t
set revcost= t2.cost
from t t1 left join t t2
on t1.src=t2.tgt and t1.tgt=t2.src
where t.src=t1.src and t.tgt=t1.tgt;
select * from t order by id;
请参阅此处的SQL小提琴:http://sqlfiddle.com/#!15/ecd54/12
答案 1 :(得分:-1)
如果我理解你的问题,我认为这会做你想要的:
update village v1
set
reverse_cost = v2.cost
from
village v2
where
v1.source = v2.target and
v2.source = v1.target and
(v1.reverse_cost is null or v1.reverse_cost != v2.cost)