分组通过几个字段之间的匹配

时间:2015-04-30 10:05:46

标签: sql ms-access group-by duplicates

我有一张表:

|    id    |  field1  |  field2  |  field3  |    
---------------------------------------------
|    1     |     A    |     B    |    C     |
|    2     |     E    |     F    |    G     |
|    3     |     H    |     A    |    I     |
|    4     |  *null*  |     J    |    K     |
|    5     |     C    |     L    |    M     |
---------------------------------------------

现在我想分组查找重复项。我写这个查询:

SELECT FIRST(ID), COUNT(id) 
FROM MyTable
GROUP BY field1
HAVING COUNT(id) > 1

仅返回field1中的重复项。如果我写GROUP BY field1, field2, field3它会在三个字段中返回重复项。 但我希望从任何字段中找到重复项并对结果集进行分组。换句话说,这样的结果:

|   Count  |  Value |
---------------------
|    2     |    A   |
|    2     |    C   |
---------------------

是否有可能在简单的分组中? 这些值是非固定宽度的,可以为null。

1 个答案:

答案 0 :(得分:1)

您可以创建联合查询:

SELECT Field1 AS FieldValue FROM MyTable
UNION ALL
SELECT Field2 AS FieldValue FROM MyTable
UNION ALL
SELECT Field3 AS FieldValue FROM MyTable

现在将此查询用作与原始查询类似的查询中的来源。