如何更新整列?

GLP*_*GLP 0 sql sql-server sql-server-2008

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

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

有人可以帮我从这里出去吗?

Con*_*rix 5

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

例如

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
Run Code Online (Sandbox Code Playgroud)

或者如果您已有映射表

UPDATE 
  TABLE
SET StatusID = map.NewStatusID
FROM
       TABLE as T
       INNER JOIN Map
       ON t.StatusID = map.OldStatusID
Run Code Online (Sandbox Code Playgroud)