访问表

时间:2017-10-17 08:31:53

标签: sql ms-access dataset

我在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)

但这不是我的问题的解决方案。 你们有人对此有所了解吗?

2 个答案:

答案 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
             ) ;

这假设如果其中两列 - iddescriptionuser - 相同,那么另一列也应该相同。

答案 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)

是否存在其他不一致记录的规则?