在SQL Server中使用复合主键更新行

时间:2014-05-26 13:51:14

标签: sql-server sql-update

我希望通过在Ordering字段上增加1来更新每一行,对于Ordering GREATER OF EQUAL比某些值而不是特定行的每一行(例如,IdClass = 15,IdContent = 9) - 两者都是主要的键)

UPDATE Content_Class 
    SET Ordering=Ordering+1 
WHERE Ordering>= 4 
AND (IdClass <> 15 AND IdContent <> 9)

这个问题是,(IdClass = 15,IdContent = 8)和(IdClass = 15,IdContent = 9)被忽略的是这个查询。

如何只使用一个查询来完成此操作?

2 个答案:

答案 0 :(得分:1)

也许是这样的:

UPDATE Content_Class 
SET Ordering=Ordering+1 
WHERE Ordering>=4 
AND NOT(IdClass = 15 AND IdContent = 9)

答案 1 :(得分:1)

UPDATE Content_Class 
    SET Ordering=Ordering+1 
WHERE Ordering>= 4 
AND (IdClass <> 15 OR IdContent <> 9)

OR

UPDATE Content_Class 
    SET Ordering=Ordering+1 
WHERE Ordering>= 4 
AND IdClass NOT IN (15,9)