搜索
首页 电脑/网络 软件 系统软件

如何删除数据库中的冗余数据?

如何删除数据库中的冗余数据?

全部回答

2018-02-22

53 0
    它将冗余数据选择到一个游标中,并根据(LastName,FirstName)来分组(在我们这个方案中),然后打开游标然后循环地取出每一行,然后用与先前的取出的键值进行比较,如果这是第一次取出这个值,或者这个值不是冗余键,那么跳过这个记录然后取下一个,不然的话,这就是这个组中的冗余记录,所以删掉它. 让我们运行一下这个存储过程 BEGIN DeleteDuplicates; END; / SELECT LastName, FirstName, COUNT(*) FROM Customers GROUP BY LastName, FirstName HAVING COUNT(*) > 1; 最后一个查询语句没有返回值,所以冗余数据没有了从表中取冗余数据的过程完全是由定义在csr_Duplicates 这个游标中的SQL语句来实现的,PL/SQl只是用来实现删除冗余数,那么能不能完全用SQL语句来实现呢? 二.SQL解决方案,使用RANK()删除冗余数据Oracle8i分析函数RANK()来枚举每一个组中的元素,在我们的方案中, 我们应用这个方案,我们使用这个函数动态的把冗余数据连续的排列起来加上编号,组由Partintion by 这个语句来分开,然后用Order by 进行分组 SELECT ID, LastName, FirstName, RANK() OVER (PARTITION BY LastName, FirstName ORDER BY ID) SeqNumber FROM Customers ORDER BY LastName, FirstName; SQL Listing 7。
     Output of single SQL statement that uses RANK() 显示的是根据记录的条数的个数来显示尤其对于冗余数据 ID LASTNAME FIRSTNAME SEQNUMBER ----- --------------- ---------- ---------- 1018 Blake Becky 1 1013 Blue Don 1 1000 Bradley Tom 1 1002 Chang Jim 1 1008 Griffith David 1 1020 Hill Larry 1 1004 King Chuck 1 1005 Krieger Jeff 1 1012 Krieger Jeff 2 1017 Krieger Jeff 3 1003 Loney Julie 1 1007 Lord Don 1 1015 Mason Paul 1 1006 Monroe John 1 1009 Simon Michael 1 1010 Simon Michael 2 1001 Stone Tony 1 1011 Stone Tony 2。
    。

类似问题换一批

热点推荐

热度TOP

相关推荐
加载中...

热点搜索 换一换

电脑/网络
系统软件
硬件
电脑装机
程序设计
互联网
操作系统/系统故障
笔记本电脑
反病毒
百度
软件
软件
系统软件
多媒体软件
办公软件
网络软件
图像处理软件
系统软件
系统软件
举报
举报原因(必选):
取消确定举报