Есть таблица в БД Postgresql c полем number_start в котором были цифры от 0 до 20
Потребовалось заменить из на другие (32400,34200,36000,37800...). Не важно какие. Но первая мысля была такая
update crm_cars_schedule
set number_start=32400
where number_start=0;
update crm_cars_schedule
set number_start=34200
where number_start=1;
.....
как понимаете это копирование нудновато. 20 раз для одного поля! А мне аналогичное нужно сделать с двумя вообще.
Спросила коллегу, он прислал такой вот простой запросик
select a.number_start,(array[20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0])[a.number_start+1]
from crm_cars_schedule a
и был вывод
0 20
1 19
...
Из чего стало понятно, что одной строкой можно заменить все значения.
И вот что сделано
update crm_cars_schedule
set
number_start=(array[32400,34200,36000,37800,39600,41400,43200,45000,46800,48600,50400,52200,54000,55800,57600,59400,61200,63000,64800,66600,68400])[number_start+1]
Это выражение заменить значение number_start равное 0 на 32400, 1 на 34200, 2 на 36000
Очень красиво вышло :)
Потребовалось заменить из на другие (32400,34200,36000,37800...). Не важно какие. Но первая мысля была такая
update crm_cars_schedule
set number_start=32400
where number_start=0;
update crm_cars_schedule
set number_start=34200
where number_start=1;
.....
как понимаете это копирование нудновато. 20 раз для одного поля! А мне аналогичное нужно сделать с двумя вообще.
Спросила коллегу, он прислал такой вот простой запросик
select a.number_start,(array[20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0])[a.number_start+1]
from crm_cars_schedule a
и был вывод
0 20
1 19
...
Из чего стало понятно, что одной строкой можно заменить все значения.
И вот что сделано
update crm_cars_schedule
set
number_start=(array[32400,34200,36000,37800,39600,41400,43200,45000,46800,48600,50400,52200,54000,55800,57600,59400,61200,63000,64800,66600,68400])[number_start+1]
Это выражение заменить значение number_start равное 0 на 32400, 1 на 34200, 2 на 36000
Очень красиво вышло :)
Комментарии
Отправить комментарий