我有一条select语句,它每次与表real_values上的值都不匹配时向我显示表原始中的所有数据。
因此,每次不匹配时,我不希望向我显示哪些路由的容量值有误,而是希望查询以正确的值对其进行更新。
这是一个较短的版本作为示例:http : //sqlfiddle.com/#!4/6a904/1
而不是成为select语句,我怎么能只更新值?我已经尝试了一些在网上看到的内容,但似乎没有任何效果。
@DavidFaber的答案是大多数人将如何做到这一点。然而,对于这种类型的查询,我更喜欢使用merge
过update
:
MERGE INTO original o
USING real_values rv
ON (o.origin = rv.origin AND o.destination = rv.destination)
WHEN MATCHED THEN
UPDATE SET
o.capacity_wt = rv.capacity_wt, o.capacity_vol = rv.capacity_vol
WHERE o.capacity_wt != rv.capacity_wt
OR o.capacity_vol != rv.capacity_vol
(从您的问题中我不清楚您是否要更新original
或real_values
,所以我选择了一个。如果我错了,将其反转应该很简单。)
merge
当您要更新多列时,我发现它更具可读性,更易于使用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句