1

我有一个表create,只有一个名为nametype 的列varchar(16)

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

例子:

 name1
 name2
 name3
 name3
 name3
 name4

之后将是

 name1
 name2
 name3
 name4

请指教。

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

4

2 回答 2

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
于 2012-07-25T17:27:52.903 回答
0

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

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

于 2012-07-25T17:30:08.243 回答