SQL - 如何返回包含重复项

时间:2017-09-21 13:54:30

标签: mysql database sqlite

我正在努力掌握SQL,因为我正在将SQLite实现到我现有的程序中。

我正在尝试找出如何在一个特定列中显示搜索重复值的结果,并且找到重复项的位置,我希望所有与找到重复项的列单元格相对应的行,显示。

例如,对于数据库中的数据是:

Column A | Column B | Column C
Peter    | Smith    | 1234
Claire   | Walter   | 1234
Sandra   | Kay      | 0000
Oliver   | Meeson   | 3456
Alex     | Grey     | 0000
James    | Garnder  | 2489

我想在C列中搜索重复项。因此,查询将发现第1行和第2行包含C列中的重复值,以及第3行和第5行。因此,在找到的位置,我需要它返回列C包含重复项的所有三列的所有字段。所以我想要的结果是:

Peter    | Smith    | 1234
Claire   | Walter   | 1234
Sandra   | Kay      | 0000
Alex     | Grey     | 0000

我阅读了几个帖子,例如thisthis以及this last one,这些帖子中最有用的是使用SELECT DISTINCT它只返回UNIQUE值(因此排除了重复的值) ,但这与我想要的相反,并且它也没有返回列A和B的结果。当我知道数据库中存在重复值时,前两篇文章中的建议只会返回空结果。

希望有人可以提供帮助?

2 个答案:

答案 0 :(得分:3)

您可以查询哪个首先根据该特定列获取所有重复值,并检索该重复值中的记录。

您的查询应该是这样的:

SELECT Column_A, Column_B, Column_C
FROM your_table 
WHERE Column_C IN (
    SELECT Column_C
    FROM your_table
    GROUP BY Column_C
    HAVING COUNT(*) > 1)

答案 1 :(得分:0)

您可以使用GROUP BY语句,如下所示:

SELECT A, B, C
FROM T 
WHERE C IN (SELECT C
            FROM T
            GROUP BY C
            HAVING COUNT(*) > 1)