中企动力 > 商学院 > sql删除重复数据只保留一条
  • ?

    SQL数据库用存储过程批量更改某一个字段的值(单表也可以)

    禹易蓉

    展开

    USE [aa] --其中aa是数据库库名

    GO

    SET ANSI_NULLS ON

    GO

    SET QUOTED_IDENTIFIER ON

    GO

    --批量替换数据库所有相同字段的值,

    --如果@Table值不为空,则只更新传入表该字段的值

    --用法1:在查询分析器写入如示语句执行批量更改:BatchModify '字段名', '旧值', '新值', ''

    --用法2:在查询分析器写入如示语句执行批量单表更改:BatchModify '字段名', '旧值', '新值', '表名'

    Create Procedure [dbo].[BatchModify](

    @Field nvarchar(40),--要替换值的字段

    @OldValue nvarchar(50),--旧值

    @NewValue nvarchar(50),--新值

    @Table nvarchar(40)--待替换的表名

    ) as

    begin

    --字段、旧值、新值不能为空

    if (@Field <> '') and (@OldValue <> '') and (@NewValue <>'')

    begin

    --传入表名不为空,则更新该表的该字段值

    if @Table <>''

    begin

    Exec('Update ' + @Table + ' Set ' + @Field + ' = ''' + @NewValue +

    ''' Where ' + @Field + ' = ''' + @OldValue + '''')

    Print '更改单个表的字段值成功!'

    end

    else

    begin

    --使用游标进行批量更新

    Declare @TableTemp nvarchar(40)

    --Declare @ID Int

    Declare BatchMod Cursor For

    --找出字段所在表的ID

    Select T.[Name] From SysColumns C Inner Join SysObjects T

    On C.ID = T.ID Where (C.[Name] = @Field) and (T.XType = 'U')

    Open BatchMod

    Fetch Next From BatchMod Into @TableTemp

    While @@FETCH_STATUS = 0

    begin

    --根据表ID找出表名

    --Select @TableTemp = [Name] From SysObjects Where (ID = @ID)

    --执行批量修改

    Exec('Update ' + @TableTemp + ' Set ' + @Field + ' = ''' + @NewValue +

    ''' Where ' + @Field + ' = ''' + @OldValue + '''')

    --循环,抓出下一条

    Fetch Next From BatchMod Into @TableTemp

    end

    --关闭、释放游标

    Close BatchMod

    Deallocate BatchMod

    Print '批量更改数据库中所有表的字段值成功!'

    end

    end

    else

    begin

    Print '字段、旧值或者新值没有输入!请检查!'

    end

    end

  • ?

    SQL2008数据库设置自动备份

    士萧

    展开

    一、上一期我们分享了SQL2000数据库如何设置自动备份,这期我们再来分享下SQL2008数据库如何设置自动备份

    二、自动备份设置流程

    1、打开SQL Server mangerment studio,如图:

    2、维护计划向导

    3、计划命名及计划设置,“更改”按钮可设置计划

    4、选择维护任务。“清除维护任务”是要将一定时间前的备份文件删除,以释放磁盘空间

    5、可调整维护计划执行的顺序

    6、选择要备份的数据库,指定备份目录,备份文件扩展名,是否验证备份完整性等

    7、清除维护任务:删除文件的类型、目录、文件扩展名、文件保留时间等

    8、默认即可

    9、完成

    10、可查看、编辑作业

    11、与SQL2000一样,2008也必须启用代理服务(启动模式请改为自动),如下图:

    三、后记

    当然,我们首先要保证的是服务器在设置自动备份的时间点没有关机,SQL相关服务正在运行,才能实现自动备份,这两点请注意。感谢关注!

  • ?

    SQL2000数据库置疑的修复

    队医

    展开

    一、SQL2000体积小、安装速度快,成熟稳定,至今仍有不小的用途;但是相比较于2005和2008,有时突然断电或磁盘问题可能导致出现“置疑”的情况机率要大一些,此时我们无法读取数据;如果有备份,直接还原即可;如果没有备份,那就只能修复了;置疑修复后不能完全保证数据的准确性,有可能部分数据会丢失。

    二、注意事项

    1、千万不要对数据库进行分离操作;

    2、建议停掉SQL服务,把置疑的数据库备份一份。

    三、置疑修复步骤

    1、假设原库名为DB,新建一个库名为DB1(不要和DB在一个目录下);

    2、停止SQL服务;

    3、将置疑库DB重命名为DB1,覆盖DB1;

    4、启动SQL服务,此时在企业管理器中DB1仍为置疑,先不用管;

    5、执行下面的语句,注意修改数据库名称:

    USE MASTER

    GO

    SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE

    GO

    UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='DB1'

    Go

    sp_dboption 'DB1', 'single user', 'true'

    Go

    DBCC CHECKDB('DB1')

    Go

    update sysdatabases set status =28 where name='DB1'

    Go

    sp_configure 'allow updates', 0 reconfigure with override

    Go

    sp_dboption 'DB1', 'single user', 'false'

    Go

    6、此时DB1库恢复正常,但如若重启电脑,库仍为“置疑”;彻底解决的方法是再新建一个库,如DB11,将DB1库中的数据通过“导入导出工具”导到新库中。

    四、SQL2000数据库设置自动备份请参考我之前的文章,为了最大限度的确保数据不被损坏,建议设置自动备份功能。

  • ?

    天天sql数据,数据分析师悲哀,出路在哪?网友:我还喜欢写sql呢

    欢心

    展开

    在互联网公司有一种职位叫数据分析师,想必好多程序员朋友也是知道的,有时他们也会偶尔与程序员交流,主要是表结构方面的沟通,他们主要用到的技术是sql,也需要对公司的业务比较了解,数据库的表结构比较了解,他们平时的主要工作是:结合业务的情况,对数据库的数据进行提取,分析,出相应的结论与报告,方便运营人员了解情况,做出相应的营销策略与措施,他们也算是一个技术工种,但也有部分这方面的技术人员会感觉到比较枯燥!

    最近就有一名数据分析师网友发出了这样的感慨,这名数据分析师认为天天写sql,天天查数据,感觉这是一个数据分析师的悲哀,自己非常迷茫,不知道以后出路在哪里?针对他的这种情况,让我们先来看看其他网友们都是什么看法吧!

    美团员工:那你想干啥呢

    上世是朵花:楼主网友主要是苦于工作的枯燥,感觉总是做重复工作。

    网友二:安安静静的写sql不好吗?非得每周让你产出分析结论,然后指导业务工作你就开心了。。。

    上世是朵花:不同工种都有好与不好,每个工种都会看到其他工种的好,自己工种的不好,真去体会一段时间就会发现没有自己想象的那么好!

    网友三:我数据分析转运营了,结果除了照常写sql还要写ppt

    上世是朵花:是的,运营人员要写ppt,与数据分析来比,技术难度降低了,但是另外的一种难!

    网友四:建模和算法

    上世是朵花:没错,这名网友提了一条路子,做算法的也经常用sql,可以结合自己的目前工作情况,适当向这方面靠拢,也许以后还有转算法工作的机会!

    网友五:我是开发也天天查数据,心累

    上世是朵花:理解,程序员嘛,查数据是正常事情!与数据分析想比,程序员除了写代码,做的事情也很杂的!

    网友六:咱俩干的一样阿,但数据分析师,这名,我们叫应用运维。但我感觉运维都不是

    上世是朵花:每个公司的职称不一样,这很正常,虽然干的活是一样,我还见过有的公司的运维要写python抓取脚本呢。

    网友七:数据分析也分很多,具体工种差异大,薪资待遇也差很多

    上世是朵花:没错,数据分析往深处研究也是很有价值的,有时一条有价值的策略能上公司的盈利情况成倍的增长。

    网友八:我好想回到天天写SQL,现在最幸福的就是可以安安静静写sql

    上世是朵花:看,有的人不喜欢,而有的人则向往,还是好好珍惜手头的事情,深挖其中的价值,让他变得有兴趣起来。

    其实,楼主这样的感慨无非是觉得数据分析这样的工作没有技术含量,天天做着重复的工作,没有什么前途可言,这是一个比较错误的看法,因为他并没有看到这个行业的价值所在,在楼主的印象里,这个行业就是写sql代码,认为这是工作的核心,恰恰相反,写sql,提取数据只是一种手段,而不是目的,“数据分析”四个字拆开来看,整个工作是基于“数据”来进行,通过各种各样的sql对数据进行提取,这只是很小一部分工作,而真正的工作在于“分析”,这才是这个行业的核心,从对数据的分析能得出相应的策略,有时一条有价值的策略能给公司带来上亿的盈利,这才是这个工作的关键所在,如果这名楼主能看到这一点,就会认为自己的工作是很有价值的,而不会再觉得枯燥,从而工作起来就更有成就感了!

    以上所有图片均来之互联网 大家好,我是“上世是朵花”。如果你有什么好的看法或者观点可以在评论区展现你的才华,互动交流,如果想进一步了解我,那就关注我吧!

  • ?

    怎么利用SQL语句查询数据库中具体某个字段的重复行

    柯水风

    展开

    可用group by……having来实现。

    可做如下测试:

    1、创建表插入数据:

    create table test(id int,name varchar(10))insert into test values (1,'张三')insert into test values (2,'李四')insert into test values (3,'张三')insert into test values (4,'王五')insert into test values (5,'赵六')

    其中name是张三的有两行,也就是重复行。

    2、执行sql语句如下:

    select * from test where name in (select name from test group by name having COUNT(*)>1)

    结果如图:

    (本文内容由百度知道网友badkano贡献)

  • ?

    SQL语句之数据更新删除数据

    乐正怡

    展开

    1、不在需要的数据,就要执行删除操作,删除语法如下:

    DELETE FROM 表名称 [ WHERE 删除条件(s) ] ;

    其中,WHERE子句里面,依然可以使用子查询进行操作。

    范例:删除雇员编号是7566的雇员信息

    DELETE FROM myemp WHERE empno=7566 ;

    范例:删除雇员编号是7788、7902的雇员信息

    DELETE FROM myemp WHERE empno=7788 OR empno=7902 ;

    DELETE FROM myemp WHERE empno IN(7788, 7902) ;

    注意:用了rollback回退操作!所以7566的数据还存在

    范例:删除高于公司平均工资的雇员信息

    DELETE FROM myemp WHERE sal>(SELECT AVG(sal) FROM myemp)

    范例:删除全部记录

    DELETE FROM myemp ;

    一定要记住,在任何的系统之中,删除操作都属于极其危险的操作。实际上,一个稳定的系统,对于删除操作,都是具备一个逻辑删除和物理删除的两种方式:

    ◆ 物理删除:直接执行DELETE FROM,彻底从表中删除记录。

    ◆ 逻辑删除:增加一个逻辑的字段,例如:有一个flag字段,如果flag=1表示已经被删除,如果flag=0表示没有被删除。

    如果真执行的是删除操作,那么,就相当于修改了flag字段的内容,同时在每次查询的时候,只需要增加一个WHERE限定条件(SELECT * FROM ... WHERE flag=1)。

    【总结】

    1、 更新操作,要比查询操作,更加的简单(语法都固定)。

    2、 所有的更新操作,每次更新完成之后,都一定会返回更新的数据行数,如果没有更新,则返回0。

  • ?

    Excel剔除单列数据重复值的五种方法

    郦映寒

    展开

    有时我们在操作数据时,需要剔除单列数据的重复值,下面为大家介绍Excel剔除单列数据重复值的五种方法,满足大家的日常需求。

    方法一:菜单按钮

    如下图,是本次操作的源数据。

    单击“数据”选项卡--》“数据工具”功能区--》“删除重复项”,弹出“删除重复项”对话框,单击“确定”即可删除单列数据 重复值。如下图所示:

    方法二:数据透视表法

    依然使用上面的数据源,单击“插入”选项卡--》“表格”功能区--》“数据透视表”,出现如下图的提示框,这里我选择现有工作表 的C1单元格(大家根据需要可以选择新工作表),单击“确定”完成数据透视表的创建,如下图:

    接着,勾选“姓名”前面的复选框,“姓名”字段就出现在《行》字段的框框里,如下图:

    然后,我们对数据透视表的数据进行修饰,单击“行标签”所在的单元格,将单元格的文字改成“姓名”,然后单击数据透视表内的任意单元格,单击“数据透视表工具”--》“设计”选项卡--》“布局”功能区--》“总计”下的“对行和列禁用”按钮就完成了,如下图所示:

    方法三:公式法

    如图,在C1单元格输入如下公式,然后同时按Ctrl+Shift+Enter三个键结束,接着拖动输入公式单元格右下角的填充柄,完成此次不重复数据的筛选。

    接着我们对公式进行逐步的讲解,首先,MATCH($A$1:$A$10,$A$1:$A$10,)=ROW($1:$10)表示查找A1至A10单元格在引用区域$A$1:$A$10的位置是否等于当前单元格行号所在的位置,如果相等,则说明该数据在这个区域中唯一

    然后通过IF(MATCH())组合函数返回这个字段的行号,否则返回2^20=1048576,接着用SMALL函数对获取的行号进行升序排序,最后通过INDEX函数查找行号所在位置的值,&“”主要是为了容错处理,试想,如果数据都取完了,就剩下1048576的位置了,然后INDEX(A:A,1048576)=0,加个&“”则返回空文本。

    方法四:SQL法

    单击“数据”选项卡--》"获取外部数据"功能区--》现有连接,打开“现有连接”对话框,单击左下角的“浏览更多”,然后找到你操作数据源所在的工作簿的路径,单击“打开”,出现“选择表格”对话框,保持默认状态,单击“确定”按钮,如下图所示:

    接着我们选择“表”单选按钮,这里我选择现有工作表的C1单元格(大家根据需要可以选择新工作表),单击“属性”按钮,打开"连接属性"对话框,找到“定义"选项卡,然后清除”命令文本“ 的文本,输入以下语句:SELECT DISTINCT * FROM [Sheet1$](这里Sheet1是我的源数据名称,你要输入自己工作表的名称哦,还有[]和$都不能少哦,若单元格区域还有其他字段或者数据不在行首,还要输入你的数据源区域哦,比如[Sheet1$].A4:A12),如下图所示:

    方法五:高级筛选法

    单击“数据”选项卡--》“排序和筛选”功能区--》“高级”按钮,弹出“高级筛选”对话框,如下图所示:

    选中“将筛选结果复制到其他位置”,选择“列表区域”和“复制到”的位置,同时勾选“选择不重复的记录”复选框,如下图所示,单击“确定”就完成了重复值的筛选。

    以上就是Excel剔除单列数据的重复值五种方法介绍,大家可以动手试一试,亲手体会一下哦。

  • ?

    如何在Excel中一键删除重复数据

    Phoebe

    展开

    以下面这张表格为例:

    我们可以看到,这张表共有4列22行数据,分别是序号、姓名、国籍、籍贯。在实际工作中,我们要处理的数据可能要多得多。

    首先,我们分析下这张表。

    可以看出,在这张表中,第2行和第21行的数据重复,第16行和第22行的数据重复。

    下面,我们来看看如何一键删除重复的数据。

    第一步:点击数据区域的任意单元格;

    第二步:点击上方“数据”菜单栏里的“删除重复项”;

    第三步:出现“删除重复项”的对话框;

    这里,我们要注意两块,第一块是右上角的“数据包含标题”,这里需根据实际情况选择,比如今天用的示例表是有标题的,那么就应该勾选上。同时我们可以看到下面出现了各列的标题。

    第二块就是下面的各列标题了。不同的选择会出现怎样的效果呢?我们来操作看看。

    【全选】--未发现重复值。

    这是怎么回事呢?原因是Excel会把每一行数据作为一个整体,由于第一列的“序号”列没有重复数据,所以出现了“未发现重复值”的结果。

    【选择姓名、国籍、籍贯】--发现了2个重复值,已将其删除;保留了20个唯一值。

    我们可以看到,第21、22行的数据已经被删除了。

    其实到这里,已经达到我们的要求了,但我们可以继续选择不同的选项,看一看会有怎样的效果。

    【选择国籍、籍贯】发现了8个重复值,已将其删除;保留了14个唯一值。

    从结果我们可以看出,籍贯列里剩下的省份名已经都只是唯一值了。

    由此我们可以想到,如果只选择“国籍”一列,将只保留一个值,就是“中国”了。

    总结一下,在我们删除重复项的时候,一定要注意选择合适的列,否则要么没有效果,要么出现误删。

    以下表为例:

    第2行和第21行的姓名是一样的,但籍贯不同,说明他们不是一个人,只是同名而已。

    如果我们按“姓名”列删除重复项,那么就会把第21行的数据误删掉,因此必须把“籍贯”列也加入进来,才能保证数据完整。

  • ?

    EXCEL表格中重复数据的处理之删除或者隐藏重复数据(一)

    吉觅翠

    展开

    很多朋友工作或者日常生活中会接触到重复数据相关的问题,今天小编来整理下如何删除重复数据的思路。

    话不多说,先看示例:

    假设你是某网吧的负责人,想整理出目前为止上过机的会员人数,你手头现在有一份会员上机表,怎么才能达到目的?

    解决问题前我们要明白这是一个怎样的问题,其实就是一个删除重复数据的问题,当然数据少的时候,排序之后手动删除就好,但是当数据很多的时候手动删除就不切实际而且容易出错。

    我先说一下解决的思路:

    首先排序是肯定的,升降序都可以,目的就是把相同数据放在一起。

    其次删除或者隐藏同类数据,相同数据只保留一条记录,这是我们的目的。观察排序之后的数据我们如何去判断什么是重复数据?就是从首条数据开始,和下条数据相比,相同就是重复数据,不相同就不是重复数据。那么我们的函数思路就有了,对比上下单元格数据就好了。相同就返回1不相同就返回0,明显一个IF函数。

    函数可以写为:=IF(A2=A3,1,0)得到如下图效果。

    4.观察之后我们会发现结果为0的就是唯一数据,所以筛选C列的结果0之后就是我们要的数据。

    5.从下面可以看出有8个筛选结果,当然因为筛选,左面行号是乱序的,我们也可以把结果粘贴到另一个sheet里,就很 明显知道有8条数据了。如下图

    到了这里,相信你已经了解如何删除或者隐藏重复数据的原理,现在我升级一下问题,还是以这个示例来说,假设你不仅想知道你负责的网吧都有哪些会员,还想知道每个会员都爱玩什么游戏,如何从下图的源数据得出结果呢?

    分析问题,刚开始我们处理的第一个问题是一列重复数据,而现在这个问题其实就是处理两列重复数据,既然我们已经知道了重复数据处理的原理,那么两列的重复数据处理思路也很明显,首先排序,两列都排序,升降无所谓,其次把两列数据当成一列数据计算对比结果就好了。函数=IF(A2&B2=A3&B3,1,0)

    最后筛选并粘贴进新表的结果为

    最后的最后,感谢您的阅览,本文讲的是重复数据之删除隐藏重复数据(一),小编会后续更新重复数据的其他问题处理思路,希望对您的工作,学习或者生活带来便利,如果您对小编的文章感兴趣,可以点击关注小编日后对重复数据其他问题解决思路的更新,再次感谢!

  • ?

    Excel小技巧:去掉重复项保留其中一条记录,该如何处理呢

    鱼啊鱼

    展开

    最近领导提了一份Word文档,里面全是打乱的,总共有六百多项,要是人工来筛查,也不知何时很搞定,寻求有什么办法去掉重复项目,保留其中一个,本文分享一个比较有效,快捷方法,供大家参考学习。

    问题:

    如何去掉重复项保留其中一个?

    方法:

    一、将Word内容复制粘贴到Excel里面

    不需要装其他复杂工作,比如数据库或者ACCESS等等,也不需要过多sql语言进行删除表建立表,只需利用Excel其中一个功能即可解决。

    二、执行命令,可能会报错,比如这个合并单元格必须相同大小

    由于Word内容出现合并表格,因此必须去掉单元格,在Excel里删除。

    执行报错

    出现以上执行错误,是因为表格里有合并项,如下图,把其中一项删除了。

    三、执行【删除重复项】命令,可以看到已经删除三百多项

    总体来说,这技巧挺方便,毕竟我们遇到这种情况很多,靠着人工来处理,效率低且未能达到目的,因此可以借此强大Excel功能来处理,达到事半功倍的效果。

    注意事项:

    必须只有一行数据,单元格不能有合并项;若合并太多,可以考虑ACCESS工具,直接复制进去,排序,然后在复制出来到Excel。

    更多信息关注【电脑帮帮手】,了解更多计算机管理以及医院信息管理,期待您的关注和支持!

sql删除重复数据只保留一条

所有视频需要登录后,才能观看

请先登录您的帐号,即可完整播放,如果您尚未注册帐号,请先点击注册。

img

在线咨询

建站在线咨询

img

微信咨询

扫一扫添加
动力姐姐微信

img
img

TOP