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_number
valores de campo de la tabla item_master
con 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
UPDATE
cláusula puede hacer referencia a un alias de tabla especificado en laFROM
cláusula. Entoncesim
en 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
FROM
clá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
MERGE
Command con mucho más control sobreMATCHED
yNOT MATCHED
: (Cambié ligeramente el código fuente para demostrar mi punto)fuente