我一直在尝试编写一个更新多个行/记录的更新查询,以便我可以使用批量更新来测试更新触发器。我已经在某处做过类似的事情
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
但正如预期的那样,这是不好的
答案 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