我认为这里面临的挑战是你试图解决的问题的开放性。改变所有表中的列名,表名和唯一性阈值会使其变得更加困难。按照我在下面显示的方式,我不认为这是最有效的,查询方式,但脚本相对容易。以下代码假定表中的值在每个表中都是唯一的。
有总共3个查询是:
qry_001_TableValues_ALL
SELECT Table1.MyValue, "Table1" AS Source
FROM Table1
UNION
SELECT Table2.MyValue, "Table2" AS Source
FROM Table2
UNION SELECT Table3.MyValue, "Table3" AS Source
FROM Table3;
qry_002_TableValues_Unique:
SELECT qry_001_TableValues_ALL.MyValue
FROM qry_001_TableValues_ALL
GROUP BY qry_001_TableValues_ALL.MyValue
HAVING (((Count(qry_001_TableValues_ALL.MyValue))=1));
qry_003_TableValues_UniqueWithSource:
SELECT qry_002_TableValues_Unique.MyValue, qry_001_TableValues_ALL.Source
FROM qry_002_TableValues_Unique INNER JOIN qry_001_TableValues_ALL
ON qry_002_TableValues_Unique.MyValue = qry_001_TableValues_ALL.MyValue;
如果列\表已更改,则第一个表是您需要编写脚本的表。它正在查看所有表并从指定的字段中创建唯一的值列表。第二个查询将查找源表格名称与原始唯一值查询中所有值为1的值的后期聚合。这意味着所涉及的所有表中只有一个返回值的实例,并且它再次与原始唯一值列表连接以确定源表是什么。您可以在此处编写对HAVING子句的更改脚本,以查看是否有包含该值的x个表。最后一个查询就是您运行的那个查询,它提供了您正在查找的值以及它们驻留的位置的最终报告。
希望这是你正在尝试做的事情。
欢迎来到Stack Overflow!一般来说,这里同意[你不应该在你的帖子中使用问候或称呼](http://meta.stackoverflow.com/questions/276033/pointless-question-edit/276037#276037)。他们妨碍我们读者找出真正的问题。这次我为你编辑了它们。 – 2014-11-05 23:43:44
上次我问了一个关于数据库投下的问题,因为我没有包括一个例子。你可能想在这里改变它。 – Steve 2018-03-08 23:23:57