SQL 服务器语法,用新值替换 table 中的现有值

SQL Server syntax to replace existing values in a table by new ones

我正在使用 SQL Server 2014,我有一个名为 ReservationStay 的 table,它有 2 列,即 ResaID 和 TAProfileID。
ReservationStay table 包含超过 50,000 条记录。我需要更改 TAProfileID 的一些值。我已经确定了所有需要更改 TAProfileID 的 ResaID,并且我有大约 4,000 条记录需要更改。

我可以如下编写 SQL 查询:

UPDATE ReservationStay
SET TAProfileID = CASE Resaid
WHEN  119 THEN 984
WHEN  155 THEN 984
WHEN  175 THEN 255
.................
ELSE TAProfileID
END
GO

等等。

但是我需要为 4,000 条记录创建查询!

另一方面,我也注意到只有22个TAProfileID需要更改!只是这22个TAProfileID全部连在一起就连了4000多条Resaid。我不想根据 Resaid 更改 TAProfileID,而是更正基于 'OLD' TAProfileID 的 TAProfileID。这样会更容易维护。

换句话说,我的 SQL 查询应该考虑以下逻辑:

IF TAProfileID = 564 THEN TAProfileId 变为 984

IF TAProfileID = 701 THEN TAProfileID 变为 255

如何编写查询来处理这个问题?

  1. 创建具有两列的临时 table

    CREATE TABLE temp
    (
       oldid int,
       newid int
    )
    
  2. 将您的逻辑插入此临时文件 table。

    INSERT INTO temp
    VALUES (564, 984), (701, 255);
    
  3. 单个更新语句。

    UPDATE O
    SET O.TAProfileID = T.newid
    FROM ReservationStay O
    JOIN temp T ON O.TAProfileID = T.oldid