首页 > 解决方案 > 更改一列以指示在单独的列中有重复项?

问题描述

我有一个表,其中一列 column_A 具有重复值。我还有一个空白的 column_indicator,对于 column_A 中的值多次出现的所有情况,我想用 1 填充它。

我知道如何选择重复项并使用以下公式:

SELECT [dbo].[myTable].[column_A], COUNT(*)
FROM [dbo].[myTable]
GROUP BY [dbo].[myTable].[column_A]
HAVING COUNT(*) > 1

如何更新 column_indicator?我努力了:

UPDATE [dbo].[myTable]
SET [dbo].[myTable].[column_indicator] = 1
WHERE
GROUP BY [dbo].[myTable].[column_A]
HAVING COUNT(*) > 1

我知道我不在基地,但无法弄清楚如何继续此专栏更新。

标签: sqlsql-serverduplicates

解决方案


您可以在公用表表达式中进行窗口计数,然后对其进行更新:

WITH cte AS (
    SELECT 
        [column_indicator],
        [column_A], 
        COUNT(*) OVER(PARTITION BY [column_A]) cnt
    FROM [dbo].[myTable]
)
UPDATE cte SET [column_indicator] = 1 WHERE cnt > 1

推荐阅读