修改单个字段中多个值中的同一字符test是数据库 CQ是表 Q001是字段 要求 把字段Q001中的所有字母W修改成字母P 
如:结果就是要把 WAIT 修改成PAIT下面是我写的命令 
update test..CQ set Q001=replace(Q001,'W','P') where Q001 IN (SELECT test..Q001 FROM CQ WHERE MQ001 LIKE 'W%')
提示错误
Violation of PRIMARY KEY constraint 'PK_CQ'. Cannot insert duplicate key in object 'CQ'.
The statement has been terminated.求解
修改单个字段中多个值中的同一字符Q

解决方案 »

  1.   

    Cannot insert duplicate key in object 'CQ'.更新时产生了相同的主键值
      

  2.   

    --替换后存在重复主键,先查询出重复是哪一个值
    select Q001,COUNT(*) as num
    from 
    (
    select Q001=replace(Q001,'W','P') 
    from test..CQ
    where Q001 IN (SELECT test..Q001 FROM CQ WHERE MQ001 LIKE 'W%')
    )t
    group by Q001
    having COUNT(*)>1
    得到重复值后,再加过滤条件,再更新
      

  3.   

    用3楼的方法找出那些可能重复的值,然后加到你update的where条件中