【问题标题】:Query to subtract all numbers in a column查询减去列中的所有数字
【发布时间】:2015-03-11 16:17:45
【问题描述】:

我认为这里不需要代码,但如果您愿意,请告诉我。

我不得不删除我的一个表中的一整套条目。这些条目是按一个随时间间隔增加的整数值组织的。有没有一种方法可以编写查询,以便特定列中的所有值都将更新为 -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 |

【问题讨论】:

  • update yourtable set field=field-1 where color in ('cyan', 'blue', ....)

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 2020-04-17
    • 1970-01-01
    • 1970-01-01
    • 2018-09-06
    相关资源
    最近更新 更多