2015-10-25 2 views
0

Заглядывая создать Update запрос, который устанавливает значения в столбце, на основе значений другого столбца в одной и той же таблицы, например:SQL с помощью UPDATE/CASE/КОГДА

UPDATE mytable 
SET field1 = CASE field2 
     WHEN field2 = 1 THEN "ASG1" 
     WHEN field2 = 2 THEN "ASG2" 
     WHEN field2 = 3 THEN "ASG3" 
     WHEN field2 = 4 THEN "ASG4" 
     WHEN field2 = 5 THEN "ASG5" 
     ELSE Field1 (retaining old value) 
     END 
WHERE field2 IN (1,2,3,4,5) 

Что бы я ни стараюсь я продолжаю завинчивание заявление

пример данных в настоящее время, а затем в обновленном виде будет:

field1 field2 
value 1 
value 2 
value 3 

field1 field2 
asg1  1 
asg2  2 
asg3  3 
+0

'СЛУЧАЙ field2 КОГДА field2 = ...' неправильно. Это либо поле case2, когда 1 then ..', либо 'case when field2 = 1 then ...'. Пожалуйста, прочитайте руководство для своей СУБД –

+0

. Эта СУБД для этого? Добавьте тег, чтобы указать, используете ли вы 'mysql',' postgresql', 'sql-server',' oracle' или 'db2' - или что-то еще. –

+0

Это для Access 2010 - почти забыл;) – stewww

ответ

2

Access SQL не поддерживает CASE ... WHEN. Вы можете использовать Switch выражение вместо ...

UPDATE mytable 
SET field1 = 
    Switch 
     (
      field2 = 1, "ASG1", 
      field2 = 2, "ASG2", 
      field2 = 3, "ASG3", 
      field2 = 4, "ASG4", 
      field2 = 5, "ASG5" 
     ) 
WHERE field2 IN (1,2,3,4,5) 

Однако, вы можете получить желаемый результат с этим проще UPDATE ...

UPDATE mytable AS m 
SET m.field1 = 'ASG' & [m].[field2] 
WHERE m.field2 In (1,2,3,4,5); 
Смежные вопросы