使用if语句从其他表更新表字段

时间:2019-01-15 22:04:39

标签: sql sql-server

我有两个表;

表1

[SKU], [QTY_on_hand]

表2

[XREF] , [QTY_on_hand]

我想用表1的[QTY_on_hand]更新表2的[QTY_on_hand] 其中[SKU] = [XREF],并且如果Table1的[QTY_on_hand]大于“ 30”,则table2的[QTY_on_hand] ='0'。

所以T-SQL是:

update Table 2
set [QTY_on_hand] = t.[QTY_on_hand]
from Table 1 t
where t.[SKU] = [XREF]

但是if语句在这里丢失了,我无法设法将if语句与'case when'或'if-else'集成起来。

2 个答案:

答案 0 :(得分:2)

以下是如何在更新语句中将第二个表联接到要更新的表,以及如何使用条件表达式来更新值:

update T2 set
  qty_on_hand = case when T1.qty_on_hand > 30 then T1.qty_on_hand else 0 end
from Table2 T2
inner join Table1 T1 on T1.SKU = T2.XREF
where ?? -- surely you don't want to update the entire table?

答案 1 :(得分:0)

您是否尝试过这样的案例声明

UPDATE Table2
SET Qty_on_Hand = CASE WHEN  SKU=XREF AND Qty_on_Hand > 30 THEN Table1.Qty_on_Hand ELSE Table2.Qty_on_Hand END