Access操作与SQL语句:重复数据处理

编程知识 更新时间:2023-04-06 10:08:00

在EXCEL中处理重复数据有如下几种方法:

  • 函数
  • 条件格式标识
  • 高级筛选
  • 数据透视表

那么,在Access中,处理重复数据的方法包含重复项查询、不重复项查询以及数据去重查询,同样可以通过菜单操作、SQL语句两种方式完成。

重复项查询

1. 菜单操作法

在新建简单查询时,对话框中就有一项“查找重复项查询向导”功能,那么,就可以使用这个功能来查找数据重复项。

以“订购明细表”中重复的用户ID为例,具体查询操作如下:

  1. 单击【创建】选项卡,在【查询】组中单击【查询向导】按钮;
  2. 在弹出的对话框中,选择【查找重复项查询向导】,单击确定按钮;
  3. 在弹出的【查找重复项查询向导】第一个对话框中,选择【表】视图,比您在列表框中选择“订购明细”表作为查询对象,单击【下一步】按钮;
  4. 在【查找重复项查询向导】第二个对话框【可用字段】列表框中,选择“用户ID”作为要进行查找重复项查询的字段,单击【完成】按钮;
  5. 查询结果如下所示,包含重复订购的用户ID,每个重复订购用户所重复订购的次数。

2. SQL查询法

单击右下角的SQL按钮,简化后的语句如下:

SELECT First(用户ID),Count(用户ID) AS NumberOfDups
FROM 订购明细
GROUP BY 用户ID
HAVING Count(用户ID) > 1;

说明:

  1. First,是第一条记录的意思。有第一就有最后,其函数是Last。如果有用户重复订购,那么我们也可不适用Fisrt函数,直接使用字段表示即可,“用户ID”取哪个值都是一样的;
  2. GROUP BY子句就是实现对数据按指定的分组字段进行分组,本例中按用户进行分组,这与数据透视表分组统计的道理是一致的;
  3. HAVING子句在SELECT语句中与GROUP BY子句联合使用,用于表示GROUP BY子句输出结果的条件,其作用相当于WHERE子句之于SELECT语句。即WHERE子句设定被选择字段的条件,而HAVING子句设置GROUP BY子句形成的分组条件。
    另外它们都需要使用关系比较运算符:=、<、>、<=、>=、或<>。
    在本例中,“HAVING Count(用户ID)>1”的意思就是对用户ID出现2次及以上的数据进行分组。

不重复项查询

既然重复项是用户订购次数大于或等于2次的结果,那么不重复项不就是用户订购次数等于1的结果么?也就是说,我们只需在刚才查找重复项的SQL语句中,把HAVING Count(用户d)>1”更改为“HAVING Count(用户D)=1”即可

SELECT First(用户ID),Count(用户ID) AS NumberOfDups
FROM 订购明细
GROUP BY 用户ID
HAVING Count(用户ID) = 1;

数据去重查询

1. GROUP BY子句

刚才对重复项和不重复项的查找都是在HAVING子句设置GROUP BY子句形成的分组条件进行的,如果要去重,就不需要设置条件,显示出所有唯一的“用户ID”,直接用GROUP BY“用户ID”字段即可。SQL语句如下:

SELECT 用户ID
FROM 订购明细
GROUP BY 用户ID;

结果如下所示:

2. DISTINCT关键字

在Access数据库中,还可以使用DISTINCT关键字,它的作用是忽略所选字段中包含重复数据的记录,简单来说,就是数据去重。
如刚才的案例中,找出所有有购买行为的“用户ID”,但只保留其中一条,SQL语句如下:

SELECT DISTINCT 用户ID
FROM 订购明细;

结果如下所示:

需要注意的是:如果SELECT子句中包含多个字段,则对于结果中包含的特定记录,其所有字段的值组合必须是唯一的。

更多推荐

Access操作与SQL语句:重复数据处理

本文发布于:2023-04-06 10:08:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/369062ef0de1d2efd0e7679d242a0833.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数据处理   语句   操作   Access   SQL

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 48972文章数
  • 14阅读数
  • 0评论数