【问题标题】:Find Rows where the Same Two Column Values Recur查找重复出现相同两列值的行
【发布时间】:2012-12-10 18:55:38
【问题描述】:

给定 SQL-Server 中的表,例如:

Id INTEGER
A  VARCHAR(50)
B  VARCHAR(50)
-- Some other columns

在 A 或 B 上没有索引的情况下,我希望找到 A 和 B 的唯一组合出现多次的行。

我正在使用查询

SELECT A+B, Count(A+B) FROM MyTable
GROUP BY A+B
HAVING COUNT(A+B) > 1

第一个问题

有没有更省时的方法来做到这一点? (我无法向数据库添加索引)

第二个问题

当我尝试通过在连接中包含, 来获得输出的某些格式时:

SELECT A+','+B, Count(A+','+B) FROM MyTable
GROUP BY A+','+B
HAVING COUNT(A+','+B) > 1

查询失败并出现错误

Column 'MyDB.dbo.MyTable.A' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause

B 列出现类似错误。

如何格式化输出以分隔两列?

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    我觉得写起来更自然:

    SELECT A, B, Count(*) FROM MyTable
    GROUP BY A, B
    HAVING COUNT(*) > 1
    

    这是最有效的方法(问题中的查询也是如此)。

    与上述查询类似,您可以重写第二个查询:

    SELECT A + ',' + B, Count(*) FROM MyTable
    GROUP BY A, B
    HAVING COUNT(*) > 1
    

    【讨论】:

    • 如此简单准确。
    猜你喜欢
    • 1970-01-01
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-23
    • 2021-08-02
    • 2019-03-21
    • 2013-04-16
    相关资源
    最近更新 更多