查询重复记录数据库教程(精选6篇)
在对数据量比较庞大的Excel电子表维护过程中, 我们以管理学校学籍数据信息为例, 经常会遇到这样一个问题, 就是需要查找出同一个工作簿内多个不同工作表中, 学号、姓名或者其它字段相同的重复记录。要求先把它们显示出来, 然后再用人工或自动方法进行删除。由于数据量很大, 人工查找删除又费时费力, 而简单合并成一个工作表又有可能造成数据混乱, 所以, 这里我们将给出Excel整理重复数据记录的方法。
一、Excel数据源备份
为防止数据丢失, 可以先插入若干工作表, 复制数据源所有数据在这些表中, 使数据源得到备份。
二、查找、标记重复记录
打开工作表数据, 我们可以根据电子表中每个字段名, 逐列排查重复记录。这里以检测A列为例, 首先在A列右侧先插入一列, 得到B列作为标记列, 然后在B1单元格中输入公式:=IF (ROW () =MATCH (A1, A:A, 0) , 1, ”重复”) , 函数MATCH的作用是对整个A列 (A:A) 进行查找, 如果第一次查找到A1值, 则使对应B1单元内容等于1, 如果是第二次或第N次查找到A1值, 则在右侧B列标记列对应单元中写入“重复”字样。
然后按照记录个数需要, 向下拖动B1单元右下角的复制句柄, 使B2、B3…Bn得到相应的值, Bn单元格中公式内容为:=IF (ROW () =MATCH (An, A:A, 0) , 1, ”重复”) , 其中An依次代表A1到An单元的值。
而公式中A:A表示检测整个A列, 这里应该注意A列数据应尽量不为空。如果是A列某一段区域, 用户还可以根据需要自行修改, 比如写成A2:A10, 表示只检查A2到A10单元的数据有没有重复。
这时再仔细观察新的标记列B列所有数据, 它们的值分别为1或者“重复”字样, 具有“重复”字样的记录, 就是我们标记的多余重复记录, 稍后需要用户删除。
当然, 我们还可以使用COUNTIF () 函数, 在B1单元格中输入公式:=IF (COUNTIF (A$2:A6, A6) >1, ”重复”, 1) , 再依据A列记录个数的需要向下拖动B1单元格右下角的复制句柄, 同样可以达到查找、标记重复记录的目的, 这两种标记方法既简单又非常有效。
三、删除带有重复标记的所有记录
经过上述处理之后, 所有多余的重复记录就都被我们标记出来了, 接下来的任务是把所有带“重复”标记的记录删除。由于手工删除工作量可能太大, 又容易出错, 所以这里我们启动vba, 运行如下程序, 让计算机对默认工作表sheet1自动完成删除多余记录的任务。
另外, 稍加修改上述程序, 我们就可以对同一个工作簿中其它张工作表 (以sheet3为例) 中的重复记录, 进行相同的删除操作。该程序中还考虑到个别复杂情况下, 用户有可能对工作表中若干列都进行过重复记录标记工作, 其中某几列同时做过标记才能删除, 这里用户只需要修改if语句中逻辑表达式即可完全任务。至此, 工作表中所有多余记录都被删除, 最后删除标记列B列。
四、综述
利用上述方法, 我们把Excel所有重复数据记录找出并删除了, 问题得到解决, 该方法省时省力, 安全高效, 对于大型工作表数据维护的意义非常重大。
摘要:文章讨论的问题是对具有庞大数据量的Excel电子表中出现的重复记录, 提出了有效的标记和删除办法。
关键词:Excel重复数据记录,标记,删除
参考文献
[1]谭浩强等编著.Visual Basic语言教程[M].北京:电子工业出版社, 2000.10
[2]周维武等编著.计算机基础教程 (第3版) [M].北京:电子工业出版社, 2008.
一、利用EXPLAIN关键字来评估查询语句中的缺陷
如下图所示,现在笔者在数据库中执行了一条简单的Select查询语句,从一个表格中查询所有信息。现在数据库管理员想知道,数据库在执行这条语句时,做了哪些工作?或者说想知道,这条查询语句有没有进一步优化的可能。如果要了解这个信息的话,就可以在查询语句中加入一个Explain关键字。
通过Select查询语句可以从数据库中查询某个表中的数据。但是这条语句执行的效率如何?是否还有优化的余地?这些内容是无法从上面这个简单的查询语句中获得的。为了了解更加详细的信息,需要加入Explain关键字。如下图所示: 加入Explain关键字之后,系统并没有查询出表格中的数据,而只是显示了查询过程中的一些信息。这些信息对于我们后续进行数据库查询优化非常有帮助。从上面这个信息中我们可以看出,用户只是进行来一个简单的查询。在这个查询中,没有用到任何索引、关键字等内容,也没有用到Where条件语句。为此这个查询语句并不是很合理。虽然其可以找到最后正确的结果,不过其查询效率可能并不是很明显。为此数据库专家可以根据上面显示的信息来进行优化。如果我们现在在查询语句中加入一条Where语句,那么又会有什么样的结果呢?如下图所示。 此时在最后一个Extra字段中,系统就会显示已经使用了Where语句。在进行数据库优化中,我们需要抓住结果中的NULL字段或者空白内容的字段。这些地方往往是我们进行优化的重点。如上图所示,我们可以给这条Select语句进行如下的优化:在表中设置关键字或者索引,来提高查询的效率。二、数据比较时采用相同类型的列以提高查询效率
在数据查询时,有时候会在条件语句中加入判断的条件。如现在有两张表:用户基本信息表和用户权限表,两者通过用户编号作为关联。现在需要查询出每个用户对应什么样的权限,此时就要通过用户编号作为查询条件来进行查询。现在假设用户基本信息表中的用户编号字段为CHAR类型的;而用户权限表中的用户编号是VARCHAR类型的。这两个数据类型虽然都是字符型,但是不是同一种类型。现在对这连个表执行关联查询,其查询的效率如何呢?首先需要确定的一点是,虽然他们两个是不同类型的字符型数据,不过是相互兼容的。最后仍然可以得到正确的结果。明确了这一点之后,我们再来考虑,能否对这个查询语句进行优化呢?
我们再假设一下。现在这两个表的用户编号的数据类型都是CHAR,
现在再对这两个表进行关联查询,得到的结果是否相同呢?我们测试的结果是,查询的结果是相同的,但是其所花费的时间是不同的。而且随着数据量的增加,两个查询所相差的时间会越来越长。从这里可以知道,虽然这两个查询语句是等价的,但是其查询的效率不同。
在MySQL数据库中,虽然相互兼容的数据类型可以进行相互比较。但是其查询的效率会有所影响。从提高数据库查询效率的角度出发,笔者建议在查询条件语句中最好比较具有相同类型的列。在同等条件下,相同的列类型比不同类型的列能够提供更好的性能。特别是在数据量比较多的数据库中,这尤其重要。
不过这个优化需要涉及到数据表的列类型。为此在数据表进行设计时,就需要考虑这一点。如针对上面这个案例,我们可以在两个表中专门设置一个用户ID列。可以使用整数类型的序列,让系统进行自动编号。然后在查询时通过这个用户ID列来进行比较,而不是通过原来的用户编号列进行比较。相对来说,这么操作查询的效率会更高。
三、在Like关键字的起始处通配符要谨慎使用
在实际工作中,笔者发现不少数据库管理员有一个不好的习惯。他们在使用Like等关键字时,通配符会乱用。如现在用户需要查找所有以“LOOK”为前缀的产品信息。用户在查询时,会习惯性的使用下面的语句进行查询:like “%LOOK%”。这个条件语句会查询出所有品名中有LOOK这个单词的纪录,而不是查询出以LOOK为前缀的产品信息。
虽然最终的结果可能是相同的。但是两者的查询效率不同。其实这很大一部分原因是客户端应用程序设计不当所造成的。如在客户端应用程序设计时,系统会默认显示一个%符号。如下图所示。
这么设计的本意是好的,让系统能够支持模糊查询。但是用户在实际操作起来,就可以有问题。如用户在查询时,不会在%号前面输入LOOK这个单词,而是在%后面输入LOOK这个单词。因为在查询时,光标会自动定位到%号后面。通常情况下,用户在输入时不会再去调整光标的位置。此时就出现了上面所说的这种情况。为此笔者建议,在Like等关键字后面如果需要用到通配符的话,要非常的谨慎。特别是从大量数据中查找纪录时,这个通配符的位置一定要用对地方。在起始处能够不同通配符的话,尽量不要使用通配符。
四、尽量使用其它形式来代替Like关键字
上面提到在使用Like关键字时需要注意通配符的位置。其实从查询效率来看,我们不仅需要注意通配符的位置,而且能够不用Like关键字最好就不用。其实在SQL语句中,可以利用其他方式来代替Like关键字。如现在有一个产品表,其编号为6位。现在需要查询以9开头的产品编号。这该怎么操作呢?
一是可以通过使用Like关键字,如LIKE “9%”。注意这个通配符的位置。这个条件语句可以查到所需要的结果。但是从性能优化的角度看,这条语句不是很好的处理方式。我们还可以通过一些折中的方式来实现。
二、游戏体验:
1、(教师准备两把椅子,请上2位学生,学生说不公平)怎么办?(又增加4名学生)增加一个游戏:闯关晋级,后上来的四名学生猜拳决定一个人胜出玩抢椅子游戏。
2、3人抢两把椅子 2人抢一把椅子
3、掌声送给谁?请参加游戏的7位同学起立,接受掌声。(6人起立)谁没起立?还差一人。猜拳几人?抢椅子几人?一共几人?(4+3=7人)
三、深入体验:
您可以到所在地的中国人民银行各地分支行、征信分中心查询。
2、个人信用记录查询需要的资料
需要本人亲自查询或授权他人到现场查询。届时,带上本人的有效身份证件的原件及复印件就可以了,其中复印件要留给查询机构备查。个人有效身份证件包括:身份证、军官证、士兵证、护照、港澳居民来往内地通行证、台湾同胞来往内地通行证、外国人居留证等。另外,在查询时,您还需如实填写个人信用报告本人查询申请表。
3、个人信用记录查询费用
个人信用报告查询是中国人民银行征信中心提供的一种服务,原则上应当收取一定费用,但目前暂不收费。
个人信用记录系统新旧版本对比
1、某银行相关负责人表示,个人信用信息一般需要两三个月才能更新到旧版系统里面。而新版系统更新这些信息只需„T+1‟工作日。
2、新版个人征信报告“瘦身”——除了个人姓名、身份证号码、查询时间等,只有3类信息:信贷记录、公共记录和说明。信贷记录中又分信用卡、房贷和其他贷款,若有逾期也将有次数显示。而老版罗列的24个月还款状态、公积金信息、居住地址、工作单位信息已不再显示。养老保险、住房公积金等条目均不在新版陈列范围之内。
3、新版报告反映了被征信人信用卡、贷款两类业务和为他人贷款担保的总体情况和明细情况。信用交易信息段包含银行信贷信用信息汇总、信用卡汇总信息、准贷记卡汇总信息、贷记卡汇总信息、贷款汇总信息、为他人贷款担保汇总信息和信用卡明细信息、贷款明细信息、为他人贷款担保明细信息九个子段。
4、新版信用报告将逾期信息的起计时点定于2009年10月,此前的不良还款记录不再展示。而在旧版个人征信报告中,逾期记录无论是几年前的都会显示。新版信用报告只展示消费者最近5年内的逾期记录。5年期限的起点应从逾期还款者还款完毕那天起,如果一直不还,就不受5年期限限制。
本人(姓名身份证号)不可撤销授权中国邮政储蓄银行 桃花仑支 行在办理 一手房按揭贷款 业务过程中(从业务申请至业务终止),向中国人民银行个人信用信息基础数据库及信贷征信主管部门批准建立的其他个人信用数据库或有关单位、部门及个人查询并留存本人的信用信息,并将本人信用信息提供给上述个人信用数据库,查询获得的信用报告限用于中国人民银行颁布的《个人信用信息基础数据库管理暂行办法》规定用途范围内。
授权人:
沈阳恒昌网络个人贷款怎么样?
沈阳恒昌的网络贷款与其它地方的贷款并不相同,沈阳恒昌的网络贷款采用的是线上与线下结构的模式,这样做可以加大客户对公司的信任度。
那么沈阳恒昌的网络个人贷款步骤怎么样呢?
沈阳恒昌网络个人贷款首先要进入恒昌官网,在“在线申请”对话框中输入您的相关信息。您生活相对应城市的客户经理会与您进行联系。并根据您的具体情况为您介绍相关产品。
众所周知信用贷款对于个人征信记录很是注重,下面介绍信用贷款的相关知识!
到哪里去查询征信报告呢?查询征信报告时我们需要提供哪些资料嘛?如何查询呢?
【查询重复记录数据库教程】推荐阅读:
数据库查询语句大全10-23
数据查询实验报告01-24
语义重复的成语09-17
重复的错误作文11-08
个人征信记录查询06-27
重复的魔力优秀教案11-29
行贿犯罪记录查询申请书12-10
重复性安全隐患专项整治活动方案07-25
社保查询个人账户怎么查询01-07
个人信息查询及留存授权书(个人征信查询)01-16