SQL更新语句未更新,执行时没有错误

时间:2020-04-23 02:30:08

标签: sql sql-update

我每天安排以下两个更新语句来更新列(x_shippit_volumetric_weight)中的较大者-净重或体积重量。 我在那里有AND语句,可以阻止它覆盖所有现有数据(如果已经存在且正确)。

问题是,即使x_shippit_volumetric_weight = 0,数据也不会被更新?执行这两个更新语句时也不会显示任何错误。

对于为什么不更新数据的任何帮助,将不胜感激。

UPDATE stock_items 
SET    x_shippit_volumetric_weight = Round( ( stock_items.x_height * stock_items.x_width_cm * stock_items.x_length_cm ) / 4000, 4) 
WHERE Round( ( stock_items.x_height * stock_items.x_width_cm * stock_items.x_length_cm ) / 4000, 4) > stock_items.weight
AND x_shippit_volumetric_weight <> Round( ( stock_items.x_height * stock_items.x_width_cm * stock_items.x_length_cm ) / 4000, 4) 
AND (stock_items.x_height * stock_items.x_width_cm * stock_items.x_length_cm) <> 0; 


UPDATE stock_items 
SET    stock_items.x_shippit_volumetric_weight = Round(( stock_items.weight ), 4) 
WHERE  stock_items.weight > Round( ( stock_items.x_height * stock_items.x_width_cm * stock_items.x_length_cm ) / 4000, 4) 
AND stock_items.x_shippit_volumetric_weight <> Round(( stock_items.weight ), 4); 

1 个答案:

答案 0 :(得分:0)

好的,我发现了数据未更新的原因(在某些情况下)。 如果x_shippit_volumetric_weight的值为NULL,则不会更新。我实际上不明白为什么,但是在其他两个UPDATE语句之前添加以下UPDATE语句可以缓解此问题。

UPDATE stock_items 
SET    x_shippit_volumetric_weight = 0 
WHERE  x_shippit_volumetric_weight IS NULL;