Muszę zaktualizować pole o wartości zwracanej przez połączenie 3 tabel.
Przykład:
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
Chcę zaktualizować mf_item_number
wartości pól tabeli item_master
o inną wartość, która jest połączona w powyższym stanie.
Jak mogę to zrobić w MS SQL Server?
Odpowiedzi:
Aby to wyjaśnić ...
UPDATE
Klauzula może odwoływać się do aliasu tabeli określonego wFROM
klauzuli. Więcim
w tym przypadku jest ważnyOgólny przykład
źródło
UPDATE im
; im jest pseudonimem, którego Postgres nie rozpoznaje: /Jednym z najprostszych sposobów jest użycie wspólnego wyrażenia tabelowego (ponieważ korzystasz już z SQL 2005):
Mechanizm wykonywania zapytań sam odkryje, jak zaktualizować rekord.
źródło
Dostosowanie tego do MySQL - nie ma
FROM
klauzuliUPDATE
, ale to działa:źródło
Nie użyłem twojej sql powyżej, ale oto przykład aktualizacji tabeli na podstawie instrukcji join.
źródło
Możesz określić dodatkowe tabele używane do określania sposobu i sposobu aktualizacji za pomocą klauzuli „FROM” w instrukcji UPDATE, jak poniżej:
W klauzuli WHERE należy podać warunki i połączyć operacje, aby połączyć te tabele razem.
Marc
źródło
MySQL: Zasadniczo wprowadź niezbędne zmiany zgodnie ze swoimi wymaganiami:
źródło
Spróbuj tak ...
źródło
Możesz użyć następującego zapytania:
źródło
Możesz aktualizować za pomocą
MERGE
Command ze znacznie większą kontroląMATCHED
iNOT MATCHED
: (nieznacznie zmieniłem kod źródłowy, aby zademonstrować swój punkt)źródło