更新具有唯一条件的行

时间:2017-01-25 10:02:37

标签: sql sql-server tsql sql-server-2014

我必须使用条件更新行,其中消息ID将是唯一的。 我如何编写相同的查询。 我的意思是说如果消息id是唯一的,那么只有行必须更新,并且表中名为flag的列必须更新为“1”。 该表是临时表,因此该值不会存储在同一个表中。 update语句也在存储过程结束时执行。 基本上它被用作记录更新一次不应该在下一次运行中出现。

对于Ex:

Update table [Tablename ] set FLAG='1' where messageID =' message id has to be unique'.

1 个答案:

答案 0 :(得分:1)

尝试这样的事情

;WITH cte
     AS (SELECT Count(1)OVER(partition BY messageID) AS cnt,*
         FROM   [Tablename])
UPDATE cte
SET    FLAG = '1'
WHERE  cnt = 1 

Count(1)OVER(partition BY messageID)将返回表格中每个messageID的计数。当计数为flag时,更新1