Previous Entry Share Next Entry
кстати, как бы это сделать
1
white_thesis wrote in ru_mysql
Не первый раз сталкиваюсь с задачей такого типа
Надо пробежаться по таблице и сделать замены вида
if (col_a == 255) set col_a = null;
if (col_b == 0) set col_b = col_c/3;
if (col_z < 0) set col_z = 200;
Независимые замены в каждой строке.

Это же можно как-то сделать за один прогон по таблице?
Одним update-ом, а не тремя ( в данном примере ).

  • 1
SET col_z = CASE WHEN col_z < 0 THEN 200 ELSE col_z END,
col_b = CASE WHEN col_b = 0 THEN col_c / 3 ELSE col_b END,

итд

Edited at 2016-06-25 10:09 am (UTC)

Хм. А ведь сработает.
Пожалуй при этом включать условие "where col_z=<0 OR col_b=0" уже нет необходимости.
Спасибо.

Я бы всё-таки условие воткнул, хоть и чисто из косметических соображений

  • 1
?

Log in

No account? Create an account