我必須更新一個值,該值由3個表的聯接返回。 sql
例: ide
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_master
的mf_item_number
字段值。 spa
如何在MS SQL Server中執行此操做? code
MySQL:一般,根據您的要求進行必要的更改: get
UPDATE shopping_cart sc LEFT JOIN package pc ON sc. package_id = pc.id SET sc. amount = pc.amount
這樣嘗試... it
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;
您可使用MERGE
命令進行更新,以對MATCHED
和NOT MATCHED
更多控制:(我稍微更改了源代碼以說明個人觀點) io
USE tempdb; GO IF(OBJECT_ID('target') > 0)DROP TABLE dbo.target IF(OBJECT_ID('source') > 0)DROP TABLE dbo.source CREATE TABLE dbo.Target ( EmployeeID INT , EmployeeName VARCHAR(100) , CONSTRAINT Target_PK PRIMARY KEY ( EmployeeID ) ); CREATE TABLE dbo.Source ( EmployeeID INT , EmployeeName VARCHAR(100) , CONSTRAINT Source_PK PRIMARY KEY ( EmployeeID ) ); GO INSERT dbo.Target ( EmployeeID, EmployeeName ) VALUES ( 100, 'Mary' ); INSERT dbo.Target ( EmployeeID, EmployeeName ) VALUES ( 101, 'Sara' ); INSERT dbo.Target ( EmployeeID, EmployeeName ) VALUES ( 102, 'Stefano' ); GO INSERT dbo.Source ( EmployeeID, EmployeeName ) VALUES ( 100, 'Bob' ); INSERT dbo.Source ( EmployeeID, EmployeeName ) VALUES ( 104, 'Steve' ); GO SELECT * FROM dbo.Source SELECT * FROM dbo.Target MERGE Target AS T USING Source AS S ON ( T.EmployeeID = S.EmployeeID ) WHEN MATCHED THEN UPDATE SET T.EmployeeName = S.EmployeeName + '[Updated]'; GO SELECT '-------After Merge----------' SELECT * FROM dbo.Source SELECT * FROM dbo.Target
您可使用如下查詢: ast
UPDATE im SET mf_item_number = (some value) 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 `sql`
使其適應MySQL- UPDATE
沒有FROM
子句,但這能夠工做: class
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