利用SQL05特性删除表中重复数据计算机等级考试

文章作者 100test 发表时间 2010:01:01 08:50:15
来源 100Test.Com百考试题网


  问题:一个表有自增的ID列,表中有一些记录内容重复,也就是说这些记录除了ID不同之外,其他的信息都相同。需要把重复的记录保留一条,剩下的删除。

  这种需求一般开发人员都会,我这里写出两个版本。

  版本一:由于记录有自增列,所以自增列可以做为记录的唯一标识,由此可见,重复的记录的自增ID是一个递增关系,这里我们可以只保留ID最小的那条记录,其它的全部删除。利用一个嵌套语句就非常容易写出下面的SQL。其中的sname,saddress是记录除了ID外的所有列。

  DELETE  FROM a
WHERE   id NOT IN ( SELECT  MIN(id)
                    FROM    a
                    GROUP BY sname,
                            saddress )

  版本二:充分利用SQL05的几个比较实用的特性。这里先简单说说要用到的几个特性。详细用法可到网上搜索下。

  1:ROW_NUMBER,它的作用就是用来生成行号,默认是从1开始。

  2:公用表表达式(CTE),我这里并不会利用它的递归,而是用它来简化嵌套查询及对表自身引用功能。CTE的语法如下:

  [ WITH 


相关文章


DNS剖析之内部构造篇计算机等级考试
家庭用无线路由器参考标准计算机等级考试
SQLServer数据存储与NTFS簇的大小计算机等级考试
关于SQLServer中的字符存储的问题的测试计算机等级考试
利用SQL05特性删除表中重复数据计算机等级考试
解密浏览器遭恶意篡改之谜计算机等级考试
重庆工商大学2010年上半年全国计算机等级考试(NCRE)报名时间计算机等级考试
长江师范学院2010上半年全国计算机等级考试报名时间计算机等级考试
重庆大学2010年上半年全国计算机等级考试(NCRE)报名时间计算机等级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛