我在Access 2016中的VBA应用程序上工作了两周。为此,我需要在不一致的数据集上清除表。要找出哪些数据集不一致,我需要一个SQL查询。所以我的表看起来像这样:
ID Description User Comment Date
1 Example1 sht3454 This is a comment 10/17/2017
1 Example2 sht3454 This also 10/15/2017
2 Example3 hdjfur198 ;) 10/11/2017
我必须找出哪些数据集不一致,在我的示例中,ID为1的数据集,因为它们具有不同的描述。 Tablefield ID在此示例中没有主键。 我想过像
这样的东西 SELECT Count(ID), Description From DB_Data group by ID,Description having (count(ID) > 1)
但这不是我的问题的解决方案。 你们有人对此有所了解吗?
答案 0 :(得分:1)
如果我理解正确:
select dd.*
from db_data dd
where exists (select 1
from db_data dd2
where dd2.id = dd.id and dd2.description = dd.description and
dd2.user <> dd.user
) or
exists (select 1
from db_data dd2
where dd2.description = dd.description and dd2.user <> dd.user and
dd2.id <> dd.id
) or
exists (select 1
from db_data dd2
where dd2.user = dd.user and dd2.id = dd.id and
dd2.description <> dd.description
) ;
这假设如果其中两列 - id
,description
,user
- 相同,那么另一列也应该相同。
答案 1 :(得分:0)
根据您的问题,唯一的不一致是某些记录共享其ID。你可以使用这个查询的那些id:
SELECT id FROM DB_Data GROUP BY id HAVING 1 < COUNT(id)
此外,如果您将先前的查询用作子查询,则可以选择相关记录:
SELECT DB_Data.*
FROM DB_Data
INNER JOIN (SELECT id FROM DB_Data GROUP BY id HAVING 1 < COUNT(id)) inconsistent
ON (example.id = inconsistent.id)
是否存在其他不一致记录的规则?