我做了很多研究,但还没有找到解释如何做到这一点的答案。
我有一张记录有关数据库信息的表。这些信息来自各种来源,其中一些是重复的。
我运行了一个查询,按系统ID,主机ID和数据库名称对所有元组进行分组。这给了我大约1203个结果。所以我的逻辑说,当删除所有重复项时,我应该可以通过查询所有进行分组,并且仍然可以获得该数字。
我的下一步是通过查询系统ID,主机ID,数据库名称和数据库版本来运行组。这产生了大约1300个结果。换句话说,我已经创建了97个额外的结果,其中包含重复项。
如何找到我添加了哪些 97系统?
我的第一个想法是做一个简单的连接,包括第二个查询中的所有结果,只有匹配的第一个查询中的结果 - 然后返回第一个查询的结果为null。但是我当然没有在第二个表中使用数据库版本,所以这不起作用。
我还尝试使用MS Access查询向导并创建两个查询,这些查询找到了数据中的所有重复项,一个包括数据库版本,另一个没有 - 然后尝试获得差异。但同样,我不知道将结果链接到什么地方。
修改
如果我的问题不够清楚,这里有一些示例数据:
原始表:
ID Hostname Database Name Version
12 abc abc 10
12 abc abc 11
12 def def 11
12 def ghi 11
13 ghi jkl 10
因此,当我运行第一个查询时,按ID,主机名和数据库进行分组,我得到了这个:
ID Hostname Database Name
12 abc abc
12 def def
12 def ghi
13 ghi jkl
当我运行第二个查询时,按ID,主机名,数据库和版本进行分组,我得到了这个:
ID Hostname Database Name Version
12 abc abc 10
12 abc abc 11
12 def def 11
12 def ghi 11
13 ghi jkl 10
我知道当字段都很常见时如何摆脱重复。我首先想要做的是识别任何具有重复ID,主机名和数据库名称但不是相同版本的系统。注意查询2中的一行额外行与查询1相比 - 我想执行查询以获取JUST该行。有什么想法吗?
答案 0 :(得分:1)
您可以将这两个结果集选择到两个不同的临时表中,然后再选择
SELECT
someCommongField
FROM
biggerTempTable
WHERE NOT IN
(SELECT someCommonField FROM smallerTempTable)
答案 1 :(得分:0)
在MS Access 2010中,您可以通过以下方式使用查询向导找到重复项:
最后,您将在查询中看到包含重复值的行,您将能够删除不需要的行。 您可以找到Here一篇关于查找和删除重复数据的文章。