MS-Access按计数(*)> 1奇怪的行为按列分组?

时间:2018-06-20 23:37:05

标签: ms-access

我正在玩ms-access(MS-Office Professional Plus 2013),试图在将一个表合并到另一个表之前弄清楚是否有重复的行。我想收集重复的行,并在合并发生之前给出重复的错误。我要介绍两种情况。第一种情况是在单列上重复。第二种情况是两列重复。在第一种情况下的任何帮助将不胜感激。

场景1: 这两个表具有完全相同的列结构,因此为了简单起见,我将使用以下表结构。 (我只是在access内部添加了两个表,然后运行查询以找出正确的语法。)

Duplicates based upon one column:
    Table1    Table2
    ID        ID       
    1         1
    2         3      

运行查询:
从表1选择ID
联合所有
从表2选择ID
按ID计数,其中count(*)> 1

结果集始终是第一条select语句中的记录。换句话说,它始终返回Id = 1和Id = 2。如果将表1更改为表2,则结果集始终来自表2。如果我更改“全部联盟”以合并相同结果。我尝试更改ID列名称以及将类型更改为数字而不是自动。知道我在做什么错吗?

场景2:我知道第二列中的值应该是什么,因此它是硬编码的。我在此处添加此代码是为了显示访问在此情况下似乎可以正常工作,但在情况1中却无法正常工作。

Duplicates based upon two columns:  
    Table1             Table2
    ID   Field1        ID   Field1
    1    abc           1    abc
    2    bcd           3    abc

运行下面的查询可以正常工作。仅返回ID = 1的行。
从表1中选择ID,字段1,其中字段1 ='abc'
全部合并
从表2中选择ID,Field1,其中Field1 ='abc'
按ID分组,Field1的count(*)> 1

2 个答案:

答案 0 :(得分:1)

domain.com/images/filename仅应用于第二个表。您需要先根据合并后的结果对GROUP BY进行UNION ALL,然后对GROUP BY进行HAVINGSELECT

不是特定于Access的,但是类似的方法有效:

SELECT id FROM
(
  SELECT id FROM a
  UNION ALL 
  SELECT id FROM b
) AS c
GROUP BY id HAVING COUNT(*) > 1

答案 1 :(得分:-1)

执行此类操作的首选方法是使用查询向导中的版本:

查询向导,查找重复查询向导

让Access为您创建SQL语句,然后您可以对其进行修改和/或将其移动到代码中。