1

我有一个如下表 AreaUser 。

area   user
------------
area2  user1
area2  user2
area3  user1

(区域,用户)是一个pk

我执行如下查询

update areatable
set user = 'user2'
where user = 'user1'

第一行更新抛出主键约束错误,第三行未更新。我如何忽略第一行错误并继续更新第三行,或者如何在更新该行之前找到(区域,用户)组合是否已经存在于表中。

希望我用这个例子清楚地说明了这个问题。在此先感谢您的帮助。

4

1 回答 1

2

你需要一个NOT EXISTS,例如

Update AreaTable
   Set User = 'user2'
 Where User = 'user1'
   And Not Exists (Select 1
                     From AreaTable CheckAreaTable
                    Where CheckAreaTable.Area = AreaTable.Area
                      And CheckAreaTable.User = 'user2')
于 2012-12-21T19:59:41.003 回答