这个SQL问题真难
类似于表1: 
 a               b            c            d....... 
 1               3            4            1....... 
 1               2            5            1....... 
 0               2            0            2....... 
 0               2            0            3....... 
 0               3            0            3....... 
 ............. 
 表有多列,多行记录   
 集合A:select   *   from   abc   where   a= '0 '   and   c= '0 '   and   b= '3 '   
 集合B:select   *   from   abc   where   a= '0 '   and   c= '0 '   and   b= '2 ' 
 目标:修改所有集合A中b   字段数据为2 
 update   abc 
 set   b= '2 ' 
 where      a= '0 '   and   c= '0 '   and   b= '3 ' 
 怎么也不能修改,提示有重复记录,不能插入相同记录,明知道可能筛选出来的记录修改后可能与集合B的记录有交叉但不知道怎么改,请高手指点. 
 谢谢了. 
------解决方案--------------------update abc 
 set b= '2 ' 
 where  a= '0 ' and c= '0 ' and b= '3 ' 
 怎么也不能修改,提示有重复记录 
 ========== 
 把"主键"或是"唯一键"去掉, 然后再修改.
------解决方案--------------------如果你把原有的b=3全部update为2,你的主键出现了重复,两种方法:要么你增加其他字段为主键,保持现有每条记录的唯一性;要么你先把现有数据导入临时表,去掉主键,合并或删掉主键重复的纪录之后导回原有表。