条件更新列值

时间:2016-03-22 12:49:12

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

我想在满足条件下更新列值。我希望值为1,2,3,4,5,...

我尝试了这个查询,但它的行为方式很奇怪。我得到的值从2开始,即2,3,4,5,..

declare @id int;

set @id = 0;

UPDATE table 
SET id = @id + 1, @id = @id + 1
WHERE col4 = 100
  AND col5 = 500
  AND col3 = 2

2 个答案:

答案 0 :(得分:4)

您似乎想要枚举符合WHERE子句中指定条件的记录。我建议使用CTEROW_NUMBER

;WITH ToUpdate AS (
  SELECT id, 
         ROW_NUMBER() OVER (ORDER BY col3) AS rn
  FROM mytable
  WHERE col4=100 AND col5=500 AND col3=2
)
UPDATE ToUpdate
SET id = rn

答案 1 :(得分:0)

试试这个 -

Declare @id int;
Set @id=1;

UPDATE table 
SET @id = id = @id + 1
WHERE 
(col4=100 AND col5=500 AND col3=2)