仅使用一列删除重复数据?

时间:2012-07-25 17:24:09

标签: sql-server duplicate-removal

我有一个名为create的表格,其中只有一列名为name,类型为varchar(16)

现在我想删除所有重复的名称,只留下其中一个。

示例:

 name1
 name2
 name3
 name3
 name3
 name4

之后将是

 name1
 name2
 name3
 name4

请建议。

我正在寻找查询,但大多数可用查询都与索引有关。

2 个答案:

答案 0 :(得分:1)

使用row_number

 WITH    cte
 AS 
 ( SELECT name, row_number() OVER ( PARTITION BY name ORDER BY name ) AS row_num
    FROM     yourTable
 )
DELETE  FROM cte
WHERE   row_num > 1

答案 1 :(得分:0)

MySQL中的索引是数据库引擎有效分区和排序数据的一种方式,以便您的查询更有效。索引允许您执行的操作之一是指定特定列或数据字段仅包含唯一条目。创建这样的索引将禁止添加已经存储的数据。

如果您已经有一个没有索引的列,我建议您清除重复项的一种方法是使用临时表。通过从原始表中选择所有唯一(不同)名称来创建临时表。然后删除原始表中的所有内容,并将记录复制回来。此时,请考虑添加索引。