Tengo que actualizar un campo con un valor que devuelve una combinación de 3 tablas.
Ejemplo:
select
im.itemid
,im.sku as iSku
,gm.SKU as GSKU
,mm.ManufacturerId as ManuId
,mm.ManufacturerName
,im.mf_item_number
,mm.ManufacturerID
from
item_master im, group_master gm, Manufacturer_Master mm
where
im.mf_item_number like 'STA%'
and im.sku=gm.sku
and gm.ManufacturerID = mm.ManufacturerID
and gm.manufacturerID=34
Quiero actualizar los mf_item_numbervalores de campo de la tabla item_mastercon algún otro valor que se une en la condición anterior.
¿Cómo puedo hacer esto en MS SQL Server?

Respuestas:
Para que quede claro ... La
UPDATEcláusula puede hacer referencia a un alias de tabla especificado en laFROMcláusula. Entoncesimen este caso es válidoEjemplo genérico
fuente
UPDATE im; im es un alias que Postgres no reconoce: /Una de las formas más fáciles es usar una expresión de tabla común (ya que está en SQL 2005):
El motor de ejecución de consultas descubrirá por sí mismo cómo actualizar el registro.
fuente
Adaptando esto a MySQL: no hay una
FROMcláusulaUPDATE, pero esto funciona:fuente
No usó su sql anterior, pero aquí hay un ejemplo de actualización de una tabla basada en una declaración de unión.
fuente
Puede especificar tablas adicionales utilizadas para determinar cómo y qué actualizar con la cláusula "FROM" en la instrucción UPDATE, como esta:
En la cláusula WHERE, debe proporcionar las condiciones y unir operaciones para unir estas tablas.
Bagazo
fuente
MySQL: en general, realice los cambios necesarios según sus requisitos:
fuente
Intenta así ...
fuente
Puede usar la siguiente consulta:
fuente
Puede actualizar con
MERGECommand con mucho más control sobreMATCHEDyNOT MATCHED: (Cambié ligeramente el código fuente para demostrar mi punto)fuente