我必须用一个值更新一个字段,该值由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

我想用在上述条件下连接的其他值更新表item_mastermf_item_number个字段值.

如何在MS SQL Server中执行此操作?

推荐答案

UPDATE im
SET mf_item_number = gm.SKU --etc
FROM item_master im
JOIN group_master gm
    ON im.sku = gm.sku 
JOIN Manufacturer_Master mm
    ON gm.ManufacturerID = mm.ManufacturerID
WHERE im.mf_item_number like 'STA%' AND
      gm.manufacturerID = 34

要说清楚...UPDATE子句可以引用FROM子句中指定的表别名.所以在这种情况下im是有效的

一般示例

UPDATE A
SET foo = B.bar
FROM TableA A
JOIN TableB B
    ON A.col1 = B.colx
WHERE ...

Sql相关问答推荐

SQL更新,在2个额外的表上使用内部连接

Postgres,使用iLike运算符从json数组中搜索的工作方式与从常规表中搜索不同

有没有办法用SQL编写一条CASE语句,如果列A&>0,那么列B,列C=0

在请求结束之前,PostgreSQL不会考虑使用中的删除

为什么在postgres中,横向连接比相关子查询快?

将重复的值更新为下一个空闲数字

如何从JSON数组中 Select 多个值

冲突查询的UPDATE时违反非空约束

如何使用SQL Server中的Nodes()方法执行与OPENXML相同的操作

在SQL中,筛选其他列中只有一个值的ID

Snowflake 中的分层数据

使用 Oracle SQL Developer 将不同的列值转换为列会导致错误 ORA-01489

Postgres,使用 select 插入多个值

如何使用 Google BigQuery 中的条件根据特定列值连接列的 N 行?

Postgresql 具有相似行为和模式行为的问题

SQL:考虑合并分支计算分支的增长百分比

如何在sparksql查询中使用日期值?

带有数组输入参数的Snowflake UDF优化

使用 PL/PGSQL 函数 Select 返回多条记录

如何在 PL/SQL 中区分返回的 XML 值?