黑马程序员技术交流社区
标题:
删除重复数据
[打印本页]
作者:
王亮
时间:
2011-7-21 15:55
标题:
删除重复数据
有一个表设计得不好,有很多重复的数据,只有一个字段为主键(就是说除了主键,其他字段全相同的行存在),怎么删除重复的数据而只留下一行数据?这个不是很难,但是如果这个表更差劲,主键都没有,怎删除重复的行?想了很久……
作者:
匿名
时间:
2011-7-21 16:29
您的很多问题,我感觉都没描述的太清楚。
最好是代码+描述,不要总是来一句“书上说”,大家又没看过你看的书,当然不好回答了。
在说说这个问题,与其要删除所有的重复记录,不如使用distinct关键字,消除重复后,新建立一张表。
首先,在Oracle中建立一张表,temp:[code=sql]CREATE TABLE temp(
empno varchar(20),
ename varchar(20),
sal number(7,2)
);[/code]然后,将emp表中的数据复制3份到temp表中:[code=sql]INSERT INTO temp
SELECT empno,ename,sal
FROM emp;[/code]把这个代码执行3遍,那么现在temp表中,就存放了3份emp表中的数据了。
接着,再创建一个表,tempDis和它temp表具有相同的字段:[code=sql]CREATE TABLE tempDis(
empno varchar(20),
ename varchar(20),
sal number(7,2)
);[/code]接着,执行如下代码:[code=sql]INSERT INTO tempDis
SELECT distinct empno,ename,sal
FROM temp[/code]最后,将temp表删掉,然后将tempDis再改一下名字,就可以了。
虽然稍微麻烦点,但是也能解决问题。 oracle中的存储过程等,我还不会,所以没法用那个东西回答您的问题。
SQL server2005的存储过程、触发器、自定义函数,我却有所研究,有兴趣咱们可以讨论一下。哈哈。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2