我对 SQL 不是很有经验。我需要手动编辑表 [TABLE_A
] 中 [COLUMN_1
] 和 [COLUMN_2
] 中具有相同值的行。我已经知道如何过滤表的编辑 View ,我只需要正确的查询。
例子:
COLUMN_1 COLUMN_2 COLUMN_3
A 100 3
C 354 2
A 999 3
A 100 1
C 255 1
B 600 5
B 600 5
B 600 7
我需要查询返回第 1、4、6、7 和 8 行。因此它应该返回如下表格:
COLUMN_1 COLUMN_2 COLUMN_3
A 100 3
A 100 1
B 600 5
B 600 5
B 600 7
我试过谷歌搜索,这是我能得到的最接近的结果,所以这就是我现在正在做的,但这不是我需要的。
SELECT COLUMN_1, COLUMN_2, COUNT(*) AS TotalCount
FROM TABLE_A
GROUP BY COLUMN_1, COLUMN_2
HAVING (COUNT(*) > 1)
ORDER BY TotalCount DESC
该查询的问题在于它不会返回每一行。它返回如下内容:
COLUMN_1 COLUMN_2 TotalCount
A 100 2
B 600 3
最佳答案
您可以使用 Window functions 执行此操作-
;WITH CTE AS
( SELECT Column_1,
Column_2,
Column_3,
COUNT(*) OVER(PARTITION BY Column_1, Column_2) AS TotalDupes
FROM Table_A
)
SELECT *
FROM CTE
WHERE TotalDupes > 1
关于sql - 如何编辑具有重复键的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12478595/