Eu tenho que atualizar um campo com um valor que é retornado por uma junção de 3 tabelas.
Exemplo:
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
Eu quero atualizar os mf_item_number
valores do campo da tabela item_master
com algum outro valor que esteja associado à condição acima.
Como posso fazer isso no MS SQL Server?
Respostas:
Para deixar claro ... A
UPDATE
cláusula pode se referir a um alias de tabela especificado naFROM
cláusula. Portantoim
, neste caso, é válidoExemplo genérico
fonte
UPDATE im
; im é um apelido que Postgres não reconhece: /Uma das maneiras mais fáceis é usar uma expressão de tabela comum (já que você já está no SQL 2005):
O mecanismo de execução da consulta descobrirá por si próprio como atualizar o registro.
fonte
Adaptando isso ao MySQL - não há
FROM
cláusulaUPDATE
, mas funciona:fonte
Não usou seu sql acima, mas aqui está um exemplo de atualização de uma tabela com base em uma instrução de junção.
fonte
Você pode especificar tabelas adicionais usadas para determinar como e o que atualizar com a cláusula "FROM" na instrução UPDATE, desta forma:
Na cláusula WHERE, você precisa fornecer as condições e unir operações para ligar essas tabelas.
Marc
fonte
MySQL: Em geral, faça as alterações necessárias de acordo com seus requisitos:
fonte
Tente assim ...
fonte
Você pode usar a seguinte consulta:
fonte
Você pode atualizar com o
MERGE
Command com muito mais controle sobreMATCHED
eNOT MATCHED
: (alterei levemente o código-fonte para demonstrar meu argumento)fonte