查找不唯一行的查询在Access中无法正常工作

时间:2015-08-26 14:24:56

标签: sql ms-access ms-access-2010 having

使用下面的代码,我试图获得不是唯一的行,这些行具有相同的columnNameTableName对。表columns_old有大约22,000个值,下面的查询返回2000.我想得到这样的行,因为通过尝试插入此select我得到的错误行没有唯一值。这样我想得到这样有问题的行:

SELECT  ColumnName,tablename                
                FROM columns_old

group by ColumnName, tablename
having count(*)> 1;

结果已经由tableName排序,我得到了这样的行:

ColName       TableName

coa_end_dt      coa
coa_name        coa
coa_num         coa
coa_src_id      coa
coa_start_dt    coa
coa_template_id coa_tmplt
deleted_flag    geog_area
........         ......

但我认为结果是这样的:

ColName       TableName

coa_end_dt      coa
coa_end_dt      coa
coa_name        coa
coa_name        coa
coa_name        coa
coa_num         coa
....

这里发生了什么?只是无法弄清楚

1 个答案:

答案 0 :(得分:1)

根据对您问题的修订,您似乎不希望只看到 ColumnName tablename 的哪些组合出现在多行中。您希望查看包含它们的实际行。

在这种情况下,将原始查询连接回源表以仅检索匹配的行:

SELECT co.ColumnName, co.tablename
FROM
    columns_old AS co
    INNER JOIN
    (
        SELECT ColumnName, tablename
        FROM columns_old
        GROUP BY ColumnName, tablename
        HAVING count(*)> 1
    ) AS sub
    ON co.ColumnName = sub.ColumnName AND co.tablename = sub.tablename;