Shy*_*yju 630 sql t-sql sql-server sql-server-2005 sql-update
我必须更新一个字段,其值由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
Run Code Online (Sandbox Code Playgroud)
我想更新mf_item_number表的字段值item_master与在上述条件中连接的其他值.
我怎样才能在MS SQL Server中执行此操作?
gbn*_*gbn 1210
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
Run Code Online (Sandbox Code Playgroud)
为了清楚起见......该UPDATE子句可以引用该子句中指定的表别名FROM.所以im在这种情况下是有效的
UPDATE A
SET foo = B.bar
FROM TableA A
JOIN TableB B
ON A.col1 = B.colx
WHERE ...
Run Code Online (Sandbox Code Playgroud)
Rem*_*anu 67
最简单的方法之一是使用公用表表达式(因为您已经在SQL 2005上):
with cte as (
select
im.itemid
,im.sku as iSku
,gm.SKU as GSKU
,mm.ManufacturerId as ManuId
,mm.ManufacturerName
,im.mf_item_number
,mm.ManufacturerID
, <your other field>
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)
update cte set mf_item_number = <your other field>
Run Code Online (Sandbox Code Playgroud)
查询执行引擎将自己弄清楚如何更新记录.
gcb*_*son 61
将其改编为MySQL - 没有任何FROM条款UPDATE,但这有效:
UPDATE
item_master im
JOIN
group_master gm ON im.sku=gm.sku
JOIN
Manufacturer_Master mm ON gm.ManufacturerID=mm.ManufacturerID
SET
im.mf_item_number = gm.SKU --etc
WHERE
im.mf_item_number like 'STA%'
AND
gm.manufacturerID=34
Run Code Online (Sandbox Code Playgroud)
Gra*_*tzy 11
没有使用上面的sql,但这里是一个基于join语句更新表的示例.
UPDATE p
SET p.category = c.category
FROM products p
INNER JOIN prodductcatagories pg
ON p.productid = pg.productid
INNER JOIN categories c
ON pg.categoryid = c.cateogryid
WHERE c.categories LIKE 'whole%'
Run Code Online (Sandbox Code Playgroud)
您可以使用UPDATE语句中的"FROM"子句指定用于确定更新方式和更新内容的其他表,如下所示:
update item_master
set mf_item_number = (some value)
from
group_master as gm
join Manufacturar_Master as mm ON ........
where
.... (your conditions here)
Run Code Online (Sandbox Code Playgroud)
在WHERE子句中,您需要提供条件和连接操作以将这些表绑定在一起.
渣
MySQL:通常,根据您的要求进行必要的更改:
UPDATE
shopping_cart sc
LEFT JOIN
package pc ON sc. package_id = pc.id
SET
sc. amount = pc.amount
Run Code Online (Sandbox Code Playgroud)
在 SQL 中使用 join 查询进行更新非常简单,无需 使用 FROMusing 子句即可完成。这是一个例子:
UPDATE customer_table c
JOIN
employee_table e
ON c.city_id = e.city_id
JOIN
anyother_ table a
ON a.someID = e.someID
SET c.active = "Yes"
WHERE c.city = "New york";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
856161 次 |
| 最近记录: |