这个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,你的主键出现了重复,两种方法:要么你增加其他字段为主键,保持现有每条记录的唯一性;要么你先把现有数据导入临时表,去掉主键,合并或删掉主键重复的纪录之后导回原有表。