如何在我尝试索引的表的列中找到重复值?

时间:2017-03-04 08:25:23

标签: sql sql-server

我有这个DDL:

CREATE TABLE [dbo].[FreqLeeds] (
    [Id]   INT             NOT NULL,
    [Freq] DECIMAL (18, 5) NOT NULL,
    [Text] NVARCHAR (50)   NULL,
    PRIMARY KEY CLUSTERED ([Id] ASC)
);

填充表格后,我尝试创建索引:

CREATE UNIQUE INDEX [IX_FreqLeeds_Text] ON [dbo].[FreqLeeds] ([Text])

create由于重复值而失败。

如何确定哪些行有重复项以及值是什么?

2 个答案:

答案 0 :(得分:1)

您可以使用聚合找到多次出现的文本:

select [Text]
from [dbo].[FreqLeeds]
group by [Text]
having count(*) > 1

如果要查看多次出现的文本的所有行(包含所有列),可以在子查询(或CTE)中使用窗口函数count并过滤:

select *
from (
    select 
        t.*,
        count(*) over (partition by [Text]) cnt
    from [dbo].[FreqLeeds] t
) t where cnt > 1;

答案 1 :(得分:1)

您可以尝试以这种方式查询您的表格

Select count(*), [Text]
from [dbo].[FreqLeeds]
group by [Text]
having count(*) > 1