SQL обновить много строк на основе значения в каждой строке - PullRequest
0 голосов
/ 30 декабря 2011

У меня действительно неэффективный SQL-скрипт, который берет следующую таблицу и заполняет val2 с помощью курсора.Я хочу иметь возможность обновить все значения val2 с помощью одного обновления, но val2 рассчитывается с использованием val1 для каждой строки.

val1: 1, val2 0
val1: 2, val2 0 
val1: 3, val2 0
val1: 4, val2 0
val1: 5, val2 0

Итак, я думаю, у вас будет что-то вроде этого:

UPDATE Table SET val2 = (some code based on val1 for each row)

Как я могу записать это в одну строку sql?

1 Ответ

5 голосов
/ 30 декабря 2011
update table set val2 = val1 + 1

Работает просто так! Если у вас есть какой-то набор кодов, который вы хотите применить с помощью оператора case:

update table set
    val2 = 
        case 
            when val1 = 1 then 'One'
            when val1 = 2 then 'Two'
            when val1 = 3 then 'Three'
            else 'Something something'
        end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...