1
1楼 slfh 2007-01-24 14:57:04 有个头疼的事情 比如 A表中有 a,b,c.....N个字段 A.c的状态为(0,或1) A.a=X(任意数值时) A.b可以有很多不同数值 c是标志b是否有效 现在的问题是 当A.a一定时 相同的b 有效记录却有两条 请问如何把有效的两条中的一条c置为0(失效) 要批量处理整个表中的数据 谢谢 2楼 yuanmu 2007-01-25 10:12:34 max(rowid) 3楼 slfh 2007-01-25 11:28:59 删除重复的b里的一条 也行 4楼 tianyacao007 2007-01-25 14:43:19 update ( select a,b,c from A where c= 1 group by a,b having count(*) > 1 ) set c=0 5楼 yuanmu 2007-01-26 09:37:47 update a set c = 0 where rowid in ( select max(rowid) from a group by a.a,a.b having count(*) > 1 ) 6楼 hdhai9451 2007-03-23 09:00:00 update a set c = 0 where c=1 and rowid in ( select max(rowid) from a where a.c=1 group by a.a,a.b having count(*) > 1 ) 7楼 jiazheng 2007-03-23 12:19:09 本人??Oracle ?? tianyacao007(天涯草-请别在触碰我荒凉心中还在痛的角落) ( ) 信誉:100 Blog 2007-1-25 14:43:20 得分: 0 update ( select a,b,c from A where c= 1 group by a,b having count(*) > 1 ) set c=0 的???法是否能?行 8楼 Eric_1999 2007-03-23 13:01:07 no! 9楼 junval 2007-03-25 12:17:04 删除重复记录 最高效的删除重复记录方法 ( 因为使用了ROWID) DELETE FROM a E WHERE E.ROWID > (SELECT MIN(X.ROWID) FROM a X WHERE X.b = E.b); 10楼 junval 2007-03-25 12:19:16 或者 更新记录 UPDATE a E SET c=0 WHERE E.ROWID > (SELECT MIN(X.ROWID) FROM a X WHERE X.b = E.b); 11楼 chenyanan722 2007-03-27 09:06:18 呵呵 何必搞得那么复杂,楼上的那个不错,我也写了个语句:
update A A1 set c=0 where A1.rowid> (select min(A2.rowid) from A A2 where A1.a=A2.a and A1.b=A2.b);
搜索墙@2009 www.pkwall.com all rights reserved QQ:276471788 [京ICP备09111534号]
声明:本站部分数据来源于网络,仅供参考,如有版权问题,请联系我们,我们将及时删除!转载本站请注明来源
|