Я должен обновить поле со значением, которое возвращается объединением 3 таблиц.
Пример:
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
Я хочу обновить mf_item_number
значения полей таблицы item_master
другим значением, которое объединено в вышеуказанном условии.
Как я могу сделать это в MS SQL Server?
Ответы:
Чтобы было понятно ... Предложение
UPDATE
может ссылаться на псевдоним таблицы, указанный вFROM
предложении. Так чтоim
в этом случае действуетОбщий пример
источник
UPDATE im
; Это псевдоним, который Postgres не распознает: /Один из самых простых способов - использовать общее табличное выражение (поскольку вы уже используете SQL 2005):
Механизм выполнения запросов самостоятельно выяснит, как обновить запись.
источник
Адаптируя это к MySQL - здесь нет
FROM
предложенияUPDATE
, но это работает:источник
Вы не использовали ваш sql выше, но вот пример обновления таблицы на основе оператора соединения.
источник
Вы можете указать дополнительные таблицы, используемые при определении того, как и что обновлять, с помощью предложения «FROM» в выражении UPDATE, например:
В предложении WHERE необходимо указать условия и операции соединения, чтобы связать эти таблицы вместе.
Марк
источник
MySQL: В общем, внесите необходимые изменения в соответствии с вашими требованиями:
источник
Попробуйте вот так ...
источник
Вы можете использовать следующий запрос:
источник
Вы можете обновить с помощью
MERGE
Command с гораздо большим контролемMATCHED
иNOT MATCHED
: (Я немного изменил исходный код, чтобы продемонстрировать свою точку зрения)источник