在Access一张表中,姓名是有所重复的,但是由于重名人太多,无法确定所有重复姓名的人都是同一个人,因此我们增加了一个字段进行匹配:
即,对于表MRI记录,包含字段姓名,年龄,性别,地址,身份证号等,认为姓名一致,且年龄一致或地址一致或身份证号一致(选择多个字段是由于有些患者的部分字段无信息),则为同一个人。
具体的作法是首先用access自带查询向导中的SQL语句,选择表MRI记录中,姓名与年龄一致的所有记录,姓名与地址一致的所有记录及姓名与身份证号一致的所有记录,而后使用UNION进行合并操作(UNION操作会去除重复记录)。
Access SQL代码为:
SELECT *
FROM MRI记录
WHERE ((MRI记录.姓名) In
(SELECT [姓名] FROM [MRI记录] As Tmp GROUP BY 姓名,年龄 having count(*)>1 And [年龄] = [MRI记录].[年龄]));
union SELECT *
FROM MRI记录
WHERE ((MRI记录.姓名) In
(SELECT [姓名] FROM [MRI记录] As Tmp GROUP BY 姓名,身份证号 having count(*)>1 And [身份证号] = [MRI记录].[身份证号]));
union SELECT *
FROM MRI记录
WHERE ((MRI记录.姓名) In
(SELECT [姓名] FROM [MRI记录] As Tmp GROUP BY 姓名,地址 having count(*)>1 And [地址] = [MRI记录].[地址]));
缺点是该方法执行速度较慢(推测原因是使用了UNION操作去除重复),20,000多条数据大概需要五分钟以上查询完毕。
网友评论