如何删除数据库中的冗余数据(2)Oracle认证考试

文章作者 100test 发表时间 2009:11:11 16:39:23
来源 100Test.Com百考试题网


"tbbnc">

  它将冗余数据选择到一个游标中,并根据(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


相关文章


Oracle查询表名及模糊查询Oracle认证考试
oracle认证辅导:oracle语句速查(2)Oracle认证考试
oracle认证辅导:oracle语句速查(1)Oracle认证考试
SQL2000附加SQL2005数据具体方法Oracle认证考试
如何删除数据库中的冗余数据(2)Oracle认证考试
如何删除数据库中的冗余数据(1)Oracle认证考试
Oracle认证辅导:Oracle用户权限查询Oracle认证考试
Oracle数据库安全基础知识Oracle认证考试
Oracle数据库Text组件SQL注入漏洞Oracle认证考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛