不用运行两个单独的查询来替换innerSku表中的outerSkuparts字段,有没有办法在一个查询中执行此操作而不影响性能?

UPDATE
    parts
SET
    innerSku = @newSku
WHERE
    innerSku = @oldSku;


UPDATE
    parts
SET
    outerSku = @newSku
WHERE
    outerSku = @oldSku;

最佳答案

我会坚持两个单独的语句,因为使用following会更新一些不需要更新的行,它将会将行更新为自身,这不会更改数据,但是会发生不必要的更新操作,我会坚持两个更新。无论如何,以下是如何使用一个update语句更新该表的方法。

UPDATE Parts
  SET innerSku = CASE
                      WHEN innerSku = @oldSku
                      THEN @newSku ELSE innerSku
                 END
     ,outerSku = CASE
                      WHEN outerSku = @oldSku
                      THEN @newSku ELSE outerSku
                 END
 WHERE innerSku = @oldSku OR outerSku = @oldSku

10-07 14:32