我有一个像下面这样的表AreaUser。
area user
------------
area2 user1
area2 user2
area3 user1
(区域,用户)是pk
我执行如下的查询
update areatable
set user = 'user2'
where user = 'user1'
第一行更新引发的主键约束错误,第三行未更新。如何忽略第一行错误并继续更新第三行 要么 如何在更新该行之前找到(区域,用户)组合是否已存在于表中。
希望我用这个例子清楚地说明了这个问题。在此先感谢您的帮助。
答案 0 :(得分: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')