update con select anidada

UPDATE MyTabla1 SET myCol1 = b.myCol1, myCol2 = c.myCol2
FROM MyTabla1 a JOIN MyTabla2 b ON a.colid = b.colid
JOIN MyTabla3 c ON a.colid = c.colid

Utilizando sentencias UPDATE combinadas con subconsultas:
UPDATE tCoches
SET marca = (SELECT CODIGO FROM tMarcas
WHERE tMarcas.Marca = tCoches.Marca )
WHERE marca IN ('FORD','RENAULT','SEAT');
Por cada registro de la tabla tCoches se ejecutará la subconsulta, actualizando el campo marca a el valor del código de la marca en la tabla tMarcas.

El uso de subconsultas para actualizar datos tiene algunas limitaciones:

La subconsulta sólo puede devover un único campo.
La subconsulta sólo puede devolver un sólo registro.
El tipo de datos devuelto por la subconsulta debe ser del mismo tipo que el campo al que estamos asignando el valor.
No todos los sistemas de bases de datos permiten usar subconsultas para actualizar datos (Access) aunque si una buena parte de ellos (ORACLE, SQL Server, Sybase ...)

Fuente : http://www.devjoker.com/asp/ver_contenidos.aspx?co_contenido=16

Comentarios

  1. Tienes razón, traté de hacer el update con subconsulta en Access 2010 y no lo permite, pero sí lo pude hacer en SQL Server 2008 Express. Acces es una lata.

    ResponderEliminar

Publicar un comentario