2011-12-30 7 views
0

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

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?

+0

Я дал вам мое лучшее предположение, но вы должны быть более конкретной информацией о коде вы хотите, если вы хотите более полный ответ. – Eric

ответ

5
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 
+0

Я вижу, поэтому, если вы просто используете val1 в инструкции set val2, он будет считать, что это val1 в той же строке. Спасибо :) – sooprise

+0

@sooprise - да, во многом так же, как вы можете комбинировать значения из нескольких столбцов в инструкции select – Murph

Смежные вопросы