我每天计划以下两个更新语句,用净重或容重中较大的一个更新列(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);
好的,我已经发现了数据不更新的原因(在某些情况下(。只要x_shippit_volumetric_weight的值为NULL,它就不会更新。我实际上不明白为什么,但是在其他两个UPDATE语句之前添加以下UPDATE语句可以缓解这个问题。
UPDATE stock_items
SET x_shippit_volumetric_weight = 0
WHERE x_shippit_volumetric_weight IS NULL;