Chinaunix

标题: 删除重复数据求教 [打印本页]

作者: huangw425    时间: 2011-06-30 09:31
标题: 删除重复数据求教
有一个字段的值 'a,b,c,a'
如何用将字段里面重复的'a'删除呢
作者: renxiao2003    时间: 2011-06-30 09:55
根据伪例rowid来删除。
作者: doni    时间: 2011-06-30 09:57
根据伪例rowid来删除。
renxiao2003 发表于 2011-06-30 09:55



    我原来也是这么想的。
   不过,这个不是LZ要的,LS没看清楚问题
作者: renxiao2003    时间: 2011-06-30 10:09
回复 3# doni


    确实,他的意思是对字段里的值进行处理。呵呵。
作者: bbgg1983    时间: 2011-06-30 20:34
导出数据库,用shell处理掉,再更新原表的这个字段
作者: wodi1015    时间: 2011-07-01 15:05
本帖最后由 wodi1015 于 2011-07-04 11:01 编辑

我试过了 可以的
update tablename
   set columeName=null
where
rowid in
(
        select row_id
        from
        (
                 select rowid row_id, row_number() over (partition by columeName order by columeName) order_id from tablename
        ) temptable
        where temptable.order_id > 1
)
作者: huangw425    时间: 2011-07-05 17:30
本帖最后由 huangw425 于 2011-07-05 17:34 编辑

非常感谢LS给力的回复,理解上LS应该能将多记录下有重复值的列更新为空,

我想将某个字段内部重复的记录值清空,我再描述详细一点点:

B列的值用逗号做分隔符
如表结构有A、B两列,共有两条记录,第1条记录正常的,第2条记录是异常的,更新前:
A        B
1        a,b,c
2        a,b,a,c

希望将表里面像第2条记录,有重复值a出现的地方都清理掉(当然其他记录重复的值可能是b或c),更新后:
A        B
1        a,b,c
2        a,b,c

如果不是我的应用比较特殊,
bbgg1983 的方法应该可行,因为数据时刻使用,所以希望不导出数据在一个SQL下能处理.

原本有想法用存储过程,例如遍历此字段的值,逐个分析对比分隔符里面值是否有重复,有重复则substr掉其中一个,但是这样就要写一个函数才能实现
不知道有哪位用过oracle下的正则表达式没,能用来实现这样的需求不 ?
作者: huangw425    时间: 2011-07-07 11:40

作者: ttleezhaoyu    时间: 2011-07-20 11:10
重复的值,有固定规律吗
作者: gguxxing008    时间: 2011-08-09 17:03
正则表达式应该也处理不了,你这个应该是没什么规律的,只要包含了重复的就删除,可以写一个字符处理函数来解决你这个问题!




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2