查询以减去列中的所有数字

时间:2015-01-13 16:22:04

标签: sql sql-server-2008 sql-update subtraction

我不认为代码在这里是必要的,但如果您不喜欢,请告诉我。

我必须删除其中一个表格中的整个条目。这些条目由整数值组织,该整数值随间隔增加。有没有办法可以编写查询,以便特定列中的所有值都以-1值更新?

例如,假设我有这张表

| Red    | 1 |
| Orange | 2 |
| Yellow | 3 |
| Green  | 4 |
| Cyan   | 6 |
| Blue   | 7 |
| Purple | 8 |
| Violet | 9 |

我可以编写一个查询,以便将青色 - 紫色的数字减一,而不是对每个条目进行唯一更新吗?

| Red    | 1 |
| Orange | 2 |
| Yellow | 3 |
| Green  | 4 |
| Cyan   | 5 |
| Blue   | 6 |
| Purple | 7 |
| Violet | 8 |

1 个答案:

答案 0 :(得分:1)

使用Cte更新,Row_number()生成序号

; WITH cte
     AS (SELECT ( Row_number()OVER( ORDER BY id) )rn,*
         FROM   yourtable)
UPDATE cte
SET    id = rn