我每天安排以下两个更新语句来更新列(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);
答案 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;