求SQL语句:如何删除一个表中的重复记录

[复制链接]
查看11 | 回复4 | 2006-5-9 19:30:46 | 显示全部楼层 |阅读模式
Oracle9i Enterprise Edition Release 9.2.0.1.0
Windows XP Pro
有一客户表,由于部门合并及其它人为原因,造成许多记录重复(客户名称重复),请问如何将重复的记录删除?只要是客户名称CNAME重复即删除,不考虑其它字段.
表结构如下:
CCODE
NOT NULL VARCHAR2(16)
CNAME
NOT NULL VARCHAR2(60)
SHORTCODE
VARCHAR2(16)
ECNAME
VARCHAR2(100)
ADDR
VARCHAR2(200)
POSTCODE
VARCHAR2(6)
TELEPHONE
VARCHAR2(32)
FAX
VARCHAR2(32)
HTTPURL
VARCHAR2(100)
CONTACT
VARCHAR2(32)
EADDRDESC
VARCHAR2(255)
EMAIL
VARCHAR2(32)
回复

使用道具 举报

千问 | 2006-5-9 19:30:46 | 显示全部楼层
再建一个表,在你不想重复的字段加上UNIQUE约束,把旧表中数据倒进去,把旧表中的数据清空,把新表的数据倒进旧表不就行了.
回复

使用道具 举报

千问 | 2006-5-9 19:30:46 | 显示全部楼层
最初由 f32 发布
[B]再建一个表,在你不想重复的字段加上UNIQUE约束,把旧表中数据倒进去,把旧表中的数据清空,把新表的数据倒进旧表不就行了. [/B]

这也是一种变通的解决方式,但我还是想知道用语句怎么实现
回复

使用道具 举报

千问 | 2006-5-9 19:30:46 | 显示全部楼层
查阅精华区的帖子。
回复

使用道具 举报

千问 | 2006-5-9 19:30:46 | 显示全部楼层
最初由 oldwain 发布
[B]查阅精华区的帖子。 [/B]

此问题已经解决,其实我一开始就想查精华贴的,但可能是我这边网络太慢了,搜了几次都是出现无法显示的页面,

总结:利用ROWID来完成,
select rowid,ccode,cname from ccode where ccode.rowid!=(select max(rowid) from ccode b where ccode.cname=b.cname)
此贴已结束!多谢各位!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行