我正在开发一个访问数据库,其中在一个表输入中,由于使用了一些旧软件,重复项经常出现在(我最终想要的)主键中,原因如下所示:
ID | Fluid | Designer | Team |
--------------------------------------------------
A | Water | John | Piping |
A | Water | James | Piping |
B | Steam | Sam | Piping |
B | Steam | Sam | Modeling |
C | Hydrogen | Joe | Piping |
D | Steam | Joe | Piping |
参考 ID 字段的重复查询产生:
ID | Fluid | Designer | Team |
--------------------------------------------------
A | Water | John | Piping |
A | Water | James | Piping |
B | Steam | Sam | Piping |
B | Steam | Sam | Modeling |
不希望自动删除这些重复项,因为重要的是要知道软件模型更改了设计者或转移到了另一个团队。因此,这些都是人工审核的。
但是,此表可以包含多达 30 个字段,并且查找单个非重复项可能会非常令人眼花缭乱。因此,我想要的输出将是:
ID | Fluid | Designer | Team |
--------------------------------------------------
A | | John | |
A | | James | |
B | | | Piping |
B | | | Modeling |
我对 SQL 的经验很少,但花了一些时间使用 Visual Basic,所以我的猜测是一些标准,例如:
if(record(n)=record(n-1), display("")
但是,从我对访问和 SQL 的基本了解来看,我知道到目前为止,与 Visual Basic 相关的是苹果与橘子的比较。
我正在运行 MS Access 2007-2010。
编辑:现在研究规范化(抱歉,我是初学者)。尽管关于我的数据库问题的更多细节。还更新了上面的决赛桌。
我认为我的数据库应该如何工作:
- 从软件导入数据(每天)。这产生了表 1。
- 使用重复查询查找 ID 列中的任何重复项。这是表 2。
- 使用查询生成一个表,该表将显示重复的 ID 以及未重复的相应列。
软件中的错误源于它将新数据修改为预先存在的数据,但仅删除了完全相同的重复数据。如果说,不同的用户在模型上工作,那么它不会更新当前 ID,而是添加一个新行,其中所有详细信息都相同,除了不同的用户。