如何更新整列?

时间:2012-02-27 16:31:32

标签: sql sql-server sql-server-2008

这是我的情况,我有一个名为StatusesstatusID, statusName)的表,有22个状态,还有其他表有statusID列。

现在,客户希望将Statuses表中的所有22种状态合并为13种状态。然后我们必须更新,确切地说,映射所有其他表中的所有statusID

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:5)

由于这听起来像是一次性事情,最简单的方法是对地图进行硬编码。

e.g。

UPDATE 
  TABLE
SET StatusID = CASE WHEN StatusID = 1 THEN 5
                    WHEN StatusID = 2 THEN 5
                    WHEN StatusID = 3 THEN 1
                    WHEN StatusID = 4 THEN 5
                    WHEN StatusID = 5 THEN 2
                    ...17 more times
               END

或者如果您已有映射表

UPDATE 
  TABLE
SET StatusID = map.NewStatusID
FROM
       TABLE as T
       INNER JOIN Map
       ON t.StatusID = map.OldStatusID