我正在努力掌握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
我阅读了几个帖子,例如this和this以及this last one,这些帖子中最有用的是使用SELECT DISTINCT它只返回UNIQUE值(因此排除了重复的值) ,但这与我想要的相反,并且它也没有返回列A和B的结果。当我知道数据库中存在重复值时,前两篇文章中的建议只会返回空结果。
希望有人可以提供帮助?
答案 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)