更新由两列

时间:2017-08-10 03:52:10

标签: sql sql-server tsql

我一直在尝试编写一个更新多个行/记录的更新查询,以便我可以使用批量更新来测试更新触发器。我已经在某处做过类似的事情

update atbv_Sales_OrdersLines 
    set Amount = case OrderID
                when 5 then 10
                when 6 then 11
    end
where OrderID in (5, 6)

但我需要根据两列选择行,我无法做到这一点 尝试类似

的东西
set Amount = case OrderID, ProductID
            when 6, 1 then 10

但正如预期的那样,这是不好的

2 个答案:

答案 0 :(得分:2)

怎么样......

update atbv_Sales_OrdersLines 
   set Amount = OrderId + 5
 where (OrderId = 6 and ProductID = 1) or
       (OrderId = 5...)

update atbv_Sales_OrdersLines 
   set Amount =
         CASE
           WHEN OrderId = 6 and ProductId = 1 THEN 11
           WHEN OrderId = 5 and ProductId = 2 THEN 10
           ...
         END
 where ...

您应该阅读Microsoft's documentation on the CASE expression并特别注意示例" H.在UPDATE语句中使用CASE"

答案 1 :(得分:0)

试试这个:

case
when OrderID in (6, 1) then 10
...
end