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
값으로 table 의 필드 값 을 업데이트하고 싶습니다 item_master
.
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 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>
쿼리 실행 엔진은 자체적으로 레코드를 업데이트하는 방법을 알아냅니다.
답변
이것을 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
답변
위의 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%'
답변
다음과 같이 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)
WHERE 절에서 이러한 테이블을 바인드하려면 조건을 제공하고 조인 조작을 제공해야합니다.
마크
답변
MySQL : 일반적으로 요구 사항에 따라 필요한 변경을 수행하십시오.
UPDATE
shopping_cart sc
LEFT JOIN
package pc ON sc. package_id = pc.id
SET
sc. amount = pc.amount
답변
이렇게 해보십시오 …
Update t1.Column1 = value
from tbltemp as t1
inner join tblUser as t2 on t2.ID = t1.UserID
where t1.[column1]=value and t2.[Column1] = value;