仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 714|回复: 8
打印 上一主题 下一主题

[学习教程] 在Sql Server中查出反复数据并删除反复数据办法

[复制链接]
因胸联盟 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 14:07:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
恢复到之前的某个状态,是需要数据的。这数据可以是a)回滚步骤或者b)操作之前的数据状态原文。在实践的开辟过程当中,我们常常会碰着数据库中某字段有反复数据的情形,好比有一个员工表,员工ID独一的,但员工姓名不是独一的,那末假如数据库中存在同名的员工时,我们要怎样查询出有反复姓名的数据呢?

先创立一个一时表,只要ID(员工编号)与name(员工称号)两个字段(测试用例,字段越少越分明^_^)
createtable#table
(
IDintprimarykeyidentity(1,1),
namevarchar(50)notnull
)

然后往该表中拔出员工姓名,包含两个反复姓名(张三和李明)
insertinto#table(name)
select张三
unionall
select张三
unionall
select李明
unionall
select李明
unionall
select李四

接上去我们要怎样查询出有反复姓名的张三和李明呢?使用groupby与having前提便可,sql以下:
selectnamefrom#tablegroupbynamehavingcount(1)>1

查询了局以下:
name
李明
张三

关于groupbyhaving与where子句的区分,请检察本站:
SqlServer中where与having的区分

呵呵,恰是我们想要的了局。反复的纪录是有查询出来了,那末我们要怎样删除个中反复的纪录,只留下一条数据呢?
删除反复数据只留下一条数据的sql以下:
deletet1from#tablet1,
(selectnamefrom#tablegroupbynamehavingcount(1)>1)t2
wheret1.name=t2.name
andt1.id(selectmax(id)from#tablet3wheret1.name=t3.name)

实行下面的sql,再来查询了局,了局以下:
IDname
2张三
4李明
5李四
这就申明,反复的纪录已被删撤除了。最初,删除测试表
droptable#table


在网上看到良多删除反复数据的办法,都有效到了一时表,实在不必,一个复杂的sql就能够完成了。但愿本例能给人人带来匡助。有了rowbase的binlog后,我们来分析一下怎么实现闪回。平时的DML无非三种操作,增删改,先说三种操作的日志格式。
变相怪杰 该用户已被删除
沙发
发表于 2015-1-18 12:05:00 | 只看该作者
可以动态传入参数,省却了动态SQL的拼写。
金色的骷髅 该用户已被删除
板凳
发表于 2015-1-25 12:31:22 | 只看该作者
财务软件要用SQL也只是后台的数据库而已,软件都是成品的,当然多学东西肯定是有好处的..
愤怒的大鸟 该用户已被删除
地板
发表于 2015-2-2 22:07:35 | 只看该作者
对一张百万级别的表建游标,同时又没有什么过滤条件,取得游标效率是如果直接SQL查询百万条数据;如果再对每条记录做处理,耗时将更长。
柔情似水 该用户已被删除
5#
发表于 2015-2-8 12:40:15 | 只看该作者
再开发调试阶段和OLAP环境中,外键是可以建立的。新版本中加入了SETNULL和SETDEFAULT属性,能够提供能好的级联设置。
乐观 该用户已被删除
6#
发表于 2015-2-25 15:36:47 | 只看该作者
光写几个SQL实在叫无知。
兰色精灵 该用户已被删除
7#
发表于 2015-3-8 00:45:14 | 只看该作者
连做梦都在想页面结构是怎么样的,绝非虚言
若相依 该用户已被删除
8#
发表于 2015-3-15 19:41:23 | 只看该作者
至于淘汰的问题,只能说在你的项目周期之内,微软应该都不会倒闭。
admin 该用户已被删除
9#
发表于 2015-3-22 03:30:15 | 只看该作者
以前的DTS轻盈简单。但是现在的SSIS虽然功能强大了很多,但是总是让人感觉太麻烦。看看论坛中询问SSIS的贴子就知道。做的功能太强大了,往往会有很多用户不会用了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-22 23:51

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表