2011-11-29 19 views
5

He buscado una solución, pero que aún no han encontrado uno que funcione ...acceso de actualización de consultas SQL múltiples valores

Estoy intentando actualizar varios valores de una columna basada en valores distintos en otra columna . Por ejemplo:

If status = F05 then statusID = 987 
If status = F12 then statusID = 12957 

He intentado esto sin éxito:

UPDATE myTable 
SET statusID = CASE status 
    WHEN 'F05' THEN 987 
    WHEN 'F12' THEN 12957 
END 

Hay miles que deben actualizarse por lo que, por supuesto, me gustaría ejecutar esto en una sola consulta de actualización.

¿Qué me estoy perdiendo? ¿Qué estoy haciendo mal?

Gracias!

+2

Sus 'miradas de consulta UPDATE' multa. Describe "He intentado esto sin éxito". ¿Que pasó? –

+1

CASE solo se puede usar en VBA, no en una MS Access Query. –

Respuesta

7

En el acceso puede usar la función SWITCH. La declaración CASE no funciona.

UPDATE myTable 
SET statusID = 
SWITCH 
    ([status] = 'F05', 987, 
    [status] = 'F12', 12957) 

Sin embargo, si usted tiene demasiados elementos es posible que desee crear una tabla de asignación que es de datos se parece

OldStatus | NewStatus 
--------------------- 
F05  | 987 
F12  | 12957 

y luego realizar los siguientes

UPDATE 
     myTable 
     INNER JOIN Mapping ON myTable.Status = Mapping.OldStatus 
SET 
     myTable.Status = Mapping.NewStatus; 
+0

¡Brillante! ¡Gracias! –

+0

Esto está funcionando muy bien. He exportado la tabla, utilicé Excel para concatenar los campos en el formato del código y lo devolví como mi consulta de actualización. ¡Qué gran ahorro de tiempo! ¡Gracias por este regalo! ~ kern –

+0

Oh no ... :) SWITCH funcionó muy bien para mi primer set, sin embargo, da un error de "expresión demasiado compleja" si uso más de 15 elementos ... ¿Cómo puedo hacer esto en masa? –

Cuestiones relacionadas