编写SQL脚本以插入/更新表中的数据

问题描述 投票:0回答:1

在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表中不存在massupdateretaildata,则对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 ...

sql sql-server insert-update sql-scripts
1个回答
0
投票

这些类型的情况通常由merge语句处理。这样的事情应该可以让您入门

© www.soinside.com 2019 - 2024. All rights reserved.