access在单个表中查找,编辑,删除重复数据_第1页
access在单个表中查找,编辑,删除重复数据_第2页
access在单个表中查找,编辑,删除重复数据_第3页
access在单个表中查找,编辑,删除重复数据_第4页
access在单个表中查找,编辑,删除重复数据_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Access 查找、删除重复数据本文介绍了如何使用 Access 来查找、删除重复数据。一般说来,您应当尽可能删除重 复的值以降低成本并提高数据准确性。Access提供了多种方法来查找、删除重复值,本文介 绍了如何使用最常见的方法来执行这些操作。一、了解重复数据使用关系数据库的一个主要原因就是为了避免重复数据。但是,随着数据库存在时间的 延长,常常会出现重复的值,尤其是当有多个用户输入数据时更容易出现这种情况。通常, 删除重复数据可以节省存储费用,并使数据保持较高的准确性。这种高准确性反过来又可以 帮助您做出更好的业务决策。例如,如果您多次输入同一份销售订单,则客户可能会收到不 需要的货物,这

2、种重复发货将增加运货成本和会计成本,从而造成浪费。1、重复的真正含义在您采取措施标识和删除重复记录之前,请记住:您需要依赖您的数据知识。与设计数 据库的过程不同,您无法遵循一组特定的规则或过程来精确地查找和删除重复记录。在执行 操作时,请记住一点:数据库查询可能会返回看似重复的记录,但实际上这些结果都是有效 数据。如果您未在查询中包括唯一标识每条记录的字段,就常常会发生这种表面上的重复。 有关如何在查询中包括必要的字段并避免出现误报的详细信息,请参阅本文后面的了解在什 么情况下记录不是重复记录一节。此外,您还必须记住:并非所有重复数据都可以删除,因为有些重复是数据库正常工作 所必需的。换句话说

3、,数据库可能既包含必要的冗余,也包含不必要的冗余,而您只希望删 除不必要的冗余。必要的冗余通常分为两类。第一类冗余确保数据库可以正常工作。例如,无论何时在表之间建立一对多或多对多关系,都需要重复主键字段中的数据。第二类必要冗余是在使用数据库的过程中产生的。例如,您可能会多次输入某个城市或 供应商的名称,或多次输入某个常见人名(如John Smith )如果出现这种情况,则可以放 心使用这些重复数据,因为数据库中的其他字段(例如主键值、地址和邮政编码)将包含足 够多的唯一信息来将这些记录排除在重复记录之外。不必要的冗余可能以多种形式出现:两条或更多条记录包含重复字段。 即使并非两条记录中的所有字

4、段都包含匹配值,这两条记录也可能被视为重复记录。例如,在下图中,您将看到 Antonio Moreno Taqueria 的两条记录。穹户公司名称蚕人姓名1脚 F?TQAntonio Moreno Taquenf,Hevfllius NauYMataderos 231Mexico 01AMATRIahton _AROUT BERGSAiw Truj il In E m阳罰日dos 百阴 Tfqji帕Avd乳 血 la:Con忖 歸icuDAnttonici Mm已no Taqu&rh Antunio fdownciMe泊1 亡ros2引州目買icoD|Around the HomThomas

5、Hardy120 Hanover SqLondonBerglunds snabbkop Chrislina BsrlunELui囲即使每条记录都具有唯一的客户ID (最左侧列中的值),“名称、地址”和“城市”字段中的值仍有可能相同。在这种情况下,即使只有部分匹配,您仍有必要应用您的业务知识判断记录是否为重复记录。两个或更多个表可以包含类似数据。例如,您可能发现“顾客”表和“客户”表中包含相同客户的记录。JWP123米11nber)金司名称Blondel pere et filsConsolidated HoldingsFolies gourmandes Piccolo und n谏 Victu

6、ailles en st課bwfW(SaJWP123米11nber)金司名称Blondel pere et filsConsolidated HoldingsFolies gourmandes Piccolo und n谏 Victuailles en st課bwfW(SaLlhGnLohe du CommE口客户CONSHSvi Jar AnRo AriDie Ms地址24, place Kleber Berkeley Garde ns 184, chaussee de T eislweg 14Draclwblut Delikatessen Du r entier Easter onnect

7、ionDRACD DUMON EASTCERNSHFAMIA FISSA FOLIGErnstelFamiliaHc|uibaldoFISSAHprica Inter. Sale手动比较数据库并不是一件容易的事,即使是很小的数据库也是如此。注释 如果您采取措施删除表中的重复数据后仍然发现窗体或报表中有重复的数据,则 可能是由于窗体或报表设计错误造成的。请确保基础表与查询之间的连接正确,并且窗体或 报表部分所包含的、绑定到同一个控件来源的控件不超过一个。2、了解在什么情况下记录不是重复记录在某些情况下,例如查看查询所返回的数据时,即使基础表看起来仅包含唯一记录,您 仍可能会看到看似重复的记录。如

8、果您的视图不包括唯一标识记录的字段,则可能会出现问 题。例如,下图显示了查询返回的数据。订单瓯1996/07/0411996/07/161996/07/0896/07/081996/07/1096/07/101996/07/0411996/07/161996/07/0896/07/081996/07/1096/07/101996/07/121996/07/121996/07/161996/07/16在该视图中,有多条记录显示为重复记录。如果您为查询添加一个或多个其他字段,例如客户名称或每份订单的主键字段(订单ID ),您会发现实际上每条记录都是唯一的,如下 图所示:订单日期发货日期发赏t也区订

9、单ID11996/07/041996/07/16102481996/07/051996/07/10102491996/07/081996/07/12 上海102501996/07/081996/07/12 上晦102511996/07/091996/07/11102521996/07/101996/07/16 深圳102531996/07/101996/07/16 深圳102541996/07/121996/07/1510255创建查询时,通常应包括一个或多个能唯一标识每条记录的字段。通常,主键字段就能够实现该功能,但您也可以改用其他字段的组合。例如,假设某个常见联系人姓名或某个城市名出现多处

10、,但如果您包括了电话号码和地址,则这种数据组合将使每条记录都具有唯一 性。3、处理重复数据时需要考虑的因素1)处理重复记录的方式取决于以下几个因素:重复的性质和范围 您只是在单个表中发现重复数据,还是发现两个相似的表(位于同 一数据库或位于两个不同的数据库)中包含重叠数据?或者,您是否在基于两个或更多个相 关表的视图中发现重复记录?您的特定需求 您希望如何处理重复数据?您希望从数据库中删除重复记录,还是仅在 视图中隐藏它们?或者,您是否希望对重复记录中的值进行计数、计算平均值或汇总?您是 否需要考虑删除或隐藏哪些重复记录?如果是,您希望手动查看并删除这些记录,还是基于 某个条件删除这些记录?在

11、开始删除记录之前,您是否还希望更新或合并一条或多条记录?通过回答上述问题(或类似的问题),再加上您的数据知识,就可以制定一份处理冗余数 据的计划。2)删除重复数据的常规准备工作如果您选择删除重复记录,则必须先处理所有现有的表关系。通常,大部分数据库都使 用一对多关系。例如,您的客户可能比较少,但每个客户下的订单非常多。因此,客户数据 表位于关系的“一”端,而订单数据位于关系的“多”端。在进行操作时请记住以下规则:如果要删除的数据位于关系的“多”端,则可以直接删除 数据而无需执行其他步骤。但如果要删除的数据位于“一”端,则必须在关系中设置一个属性, 否则,Access将禁止删除。开始删除冗余数据

12、之前,请考虑采用下面的一种或多种方法来准备数据库:确保数据库不是只读数据库。确保您具有编辑或删除数据库中的记录的必要权限。请求数据库的所有其他用户关闭您要处理的对象。这有助于避免锁定冲突。提示 如果有大量用户连接到该数据库,您可能需要关闭该数据库,然后以独占模式将它重新打开。删除记录之前请备份数据库。您不能取消或撤消删除操作。恢复已删除记录的唯一方法 是从备份中恢复。删除操作还可能会删除相关表中的记录,因此在开始删除操作之前最好先 备份整个数据库。二、在单个表中查找和编辑、隐藏或删除重复数据 以下各节中的步骤介绍了在单个表中查找和编辑、隐藏或删除重复值的最常见方法。1、查找其中某些字段全部或部

13、分匹配的记录 查找包含全部或部分匹配值的记录的过程包括以下主要步骤: 使用“查找重复项查询向导”创建一个查询。默认情况下,仅当每个字段中的值完全相同 时,查询才会返回重复记录。如果需要查找各记录部分字段重复项,可以在查询中使用一个 表达式,也可以更改结构化查询语言 (SQL) 代码。本节中的步骤介绍了如何创建重复项查询,以及如何更改查询来查找部分匹配项。这些 步骤将使用示例中提供的“顾客”表,查找“公司名称”相同的记录(示例中查询“使用查找重复 项查询向导查找重复项”)。创建重复项查询1)在“新建查询”对话框中,单击“查找重复项查询向导,” 然后单击“确定”。如果显示提示消息通知您未安装此功能

14、,请单击“是”安装该向导。2)在表列表中,选择“顾客”表,然后单击“下一步”。3)在可用字段列表中,仅选择包含重复信息的字段: “公司名称”、“地址”和“城市”字段,因为只有这些字段包含完全匹配(逐个字符比较)的值。单击“下一步”。注释 如果在此步骤中添加的字段不包含完全匹配(逐个字符比较)的值,则查询可能 不会返回任何结果。4)在下一个可用字段列表中,选择包含要检查或更新的字段,或选择包含有助于您区分重复记录和非重复记录的数据的字段。示例中添加“联系人姓名”和“移动电话”字段,因为这两 个字段中的数据可以帮助您查找重复值,并且可能指出输入这些值的原因。单击“下一步”。5)输入查询名称,然后单

15、击“完成”运行查询。您将看到以下结果:您在查阅“顾客”表时,可能已经注意到有两条以上的公司名称重复的记录(该表包含 4 条)。您没有看到其他重复记录是因为“地址”字段中的值不完全匹配(逐个字符比较)。您可 以修改查询,以返回部分匹配的值。下一组步骤将介绍如何修改查询。自定义查询以查找部分匹配项1)将上面创建的查询切换到 SQL 视图。您将看到以下 SQL 语句:SELECT 顾客.公司名称, 顾客.地址, 顾客.城市, 顾客.联系人姓名, 顾客.移动电话FROM 顾客WHERE (顾客.公司名称) In (SELECT 公司名称 FROM 顾客 As Tmp GROUP BY 公司名称,地址,

16、城市 HAVING Count(*)1 And 地址 = 顾客.地址 And 城市 = 顾 客.城市)ORDER BY 顾客.公司名称, 顾客.地址, 顾客.城市;2)修改 SQL 代码以查找和比较部分值。在本例中,WHERE子句使用另一个SELECT语句对照表中的其他所有记录来比较每 条记录,以确定重复项集合。假定您需要修改“地址”字段以返回部分匹配项。下表显示了如何修改该语句,以便只须 匹配字段中的前七个字符。修改内容以红色显示:SELECT 顾客.公司名称, 顾客.地址, 顾客.城市, 顾客.联系人姓名, 顾客.移动电话FROM 顾客WHERE (顾客.公司名称) In (SELECT

17、公司名称 FROM 顾客 As Tmp GROUP BY公司名称,left(地址,7),城市HAVING Count(*)1 And left(地址,7) = left(顾客地址,7)And 城市 = 顾客.城市)ORDER BY 顾客.公司名称, 顾客.地址, 顾客.城市;修改完语句后,单击“运行”以运行查询并在数据表视图中显示结果。现在,查询将返回全部四条重复记录,因为现在只需匹配“地址”字段中的前 7 个字符(从 左边开始):2、手动编辑记录在数据表视图中打开在上面的步骤中创建的查询。请执行下列操作之一:要编辑某个字段中的值,请选择该字段并输入新值。 要删除整条记录(一行),请单击行选择

18、器(行旁边的空框)并按 Delete。注释 如果找到大量重复记录(以致于您无法手动删除),可以通过创建并运行一个删除 查询来删除这些记录。有关创建并运行删除查询所涉及的基本步骤,请参阅本文后面的使用 删除查询删除重复记录一节。3、显示唯一记录 大部分数据库表都包含一个唯一标识每条记录的字段,该字段通常为主键字段。如果您 在设计查询时隐藏或省略这些类型的字段,可能会看到看似重复的记录,因为所有返回字段 中的值都是匹配的。例如,下图显示的查询结果中有两份订单(位于红色框中)看起来是重复的。公司名称地址n痢创诜市口大街5T北京需文和谦公司厂安门内大術芥齐哈尔英囱丈业公司术平衡231冬齐齐临献3EFM

19、MM空诃*平陽21 7;吝蜡朱康縛贸易公闰韶关犬1$ 120母傅天工趕公司二盟庄6号豔讯科技育柬公司垦成门大樹$7囂讯科技有E眩司昼成门大街169 4;B曲閉*窑 5 豆但是,如果查询包括了主键字段(例如订单ID )或能够唯一标识每条记录的其他字段(例如发货日期),您会发现这些记录并非重复记录。本节将介绍如何隐藏查询返回的所有字段中的值均匹配的重复记录。执行操作时,请记住以下规则:只有当查询结果中的所有字段均包含相同的值时,才会 将两条或多条记录视为重复记录。即使有一个字段中的值不同,每条记录也将是唯一记录, 因此您不能使用此处介绍的方法隐藏这些记录。如果要隐藏这些类型的重复记录,可以将总 计

20、查询与聚合函数(例如 FIRST、MIN、MAX 等等)一起使用。有关执行此操作的信息,请参阅本文后面通过指定在结果中显示哪些重复记录来显示不同的记录一节。Access 提供了在查询结果集中显示唯一值的方法:设置“唯一值”属性|口|昌使用查找重皐顶查诲肓导查找重复項-1 :选择查诲|口|昌使用查找重皐顶查诲肓导查找重复項-1 :选择查诲注释 将查询的“唯一值”属性设置为“是”后,如果查询处于数据表视图,则您不能编辑字 段值或删除数据。要编辑或删除数据,请在数据表视图中打开基础表。单击“运行” 以运行查询并在数据表视图中显示结果。如果数据包含重复记录,将仅显示这些记录中的一条。4、通过指定在结果中显示哪些重复记录来显示不同的记录当有重复记录时,您可能只希望看到不同的值,即:仅显示每组重复记录中的一条记录 要查询某条特定的重复记录,可以使用一种称为总计查询的查询。向总计查询添加字段时, 查询会将每个字段视为一个组,并且您可以针对组中的数据运行一类称为聚合函数的函数。 这些函数反过来又可以从一组重复记录中返回一条记录。您可以通过多种方法对这些数据使用总计查询和聚合函数:使用 First 函数,仅显示最先输入的记录。使用 Last 函数,仅显示最后输入的记录。使用 Max 或 Min 函数,仅显示特定字段中的值最小或最大的记录。例如,您可以使用Max 函数显示具

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论