请问那位可以解释一下这个SQL语句 delete test1 where rowid in(select rid from(select rowid rid,row_number() over(partition by mobliephone order by userid desc) rn from test1)where rn>1);这个语句的目的是删除重复的数据但是这个语句我完全无法读懂到底是什么意思请问那位高手能给我解释一下么? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 首先是一个分析查询,通过mobliephone分区;它使用ROW_NUMBER()给每个分区进行编号。如果没有重复的内容,分区就只有一个行,编号是 “1”。但是,如果存在重复,那么它们就会被编上2、3等号码。这个查询还会返回用来唯一识别数据行的ROWID。第一个查询然后就被用作另外一个查询的内联视图,这第二个查询使用一个WHERE子句过滤掉“1”行,只返回重复的内容。最后,一个DELETE语句通过第二个查询使用IN操作符来删掉所有的重复内容。 分区中按userid的逆序排序。这个语句的目的是只保留每个mobilephone一条记录,删除同一个mobilephone的userid小的记录,如果userid也相同就只保留一条记录。 delete test1 A where rowid <>( SELECT MIN(ROWID) FROM TEST1 B WHERE A.mobliephone = B.mobliephone ), 其中mobliephone表示重复条件,可扩展 一看曉得是查找重復紀錄的有好幾種方法建議看哈這個博客http://jack198409.itpub.net/ 求一个sql语句 如何删除oracle数据库前后带空格的数据,请看下面描述 行转列,求助 oracle 创建表时主外键的设置 更新备份LOG表的oracle触发器问题 如何将库imp入特定的dbf文件当中 oracleagent启动失败。怎么办? 关于Oracle 8 中的BLOB字段的容量问题 function中使用select 查找记录,结果为空时报错?? 【急】在oracle中怎么从时间中得到单独年、月、日! oracle数据库中怎么建立一个用户给他分配权限,只能对一个表进行操作????高手指教,最好是命令行中的命令,详细点!!感激不尽! CLOB 类型分组出错,急..
如果没有重复的内容,分区就只有一个行,编号是 “1”。但是,如果存在重复,那么它们就会被编上2、3等号码。
这个查询还会返回用来唯一识别数据行的ROWID。
第一个查询然后就被用作另外一个查询的内联视图,
这第二个查询使用一个WHERE子句过滤掉“1”行,只返回重复的内容。
最后,一个DELETE语句通过第二个查询使用IN操作符来删掉所有的重复内容。
有好幾種方法
建議看哈這個博客http://jack198409.itpub.net/