在SQL Server中,我有一个名为-massupdate
的临时表和一个名为retaildata
的主表>
结构如下。
表massupdate:
| retail_id | Qty| | 1 | 1 | | 2 | 2 |
表零售数据:
| retail_id | Qty| | 1 | 1 | | 2 | 2 |
[
retaildata
也有更多列,但这两列与临时表massupdate
相同。
基本上应该发生的是,如果retail_id
中存在massupdate
表中的retaildata
,则用qty
表中的retaildata
更新qty
表中的massupdate
。如果retail_id
表中不存在massupdate
的retaildata
,则对retaildata
表进行插入查询。基本上,企业已经给出了一个Excel,我将这些数据输入massupdate
表中,然后与主表retaildata
进行比较。
我已经写过这样的查询,但这是不正确的:
IF EXISTS (SELECT retail_id FROM retaildata WHERE retail_id in (select retail_id from massupdate))
BEGIN
UPDATE S SET s.Qty= C.Qty FROM retaildata S inner join massupdate C on S.retail_id=C.retail_id
END
ELSE
BEGIN
INSERT INTO retaildata (retail_id,Qty,Trigger_Suppress,Next_Ship_Date,Next_Ship_Qty,Last_Ship_Date,Last_Ship_Qty,Carrier_Text,Ship_Number,Work_Pack_Code,Supplier_Part_Number,Supplier_Inv_Qty,Ship_Comments,Last_Updt_User,Last_Updt_Date)
SELECT retail_id,Qty,'N',null,null,null,null,null,null,null,null,null,null,'BATCH TRRIGER INSERT/UPDATE',Getdate() FROM massupdate END
在SQL Server中,我有一个称为-massupdate的临时表和一个名为retaildata的主表。结构如下-Table massupdate-> | retail_id |数量| | 1 | 1 | | 2 ...
这些类型的情况通常由merge语句处理。这样的事情应该可以让您入门