我有一个名为create
的表格,其中只有一列名为name
,类型为varchar(16)
。
现在我想删除所有重复的名称,只留下其中一个。
示例:
name1
name2
name3
name3
name3
name4
之后将是
name1
name2
name3
name4
请建议。
我正在寻找查询,但大多数可用查询都与索引有关。
答案 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中的索引是数据库引擎有效分区和排序数据的一种方式,以便您的查询更有效。索引允许您执行的操作之一是指定特定列或数据字段仅包含唯一条目。创建这样的索引将禁止添加已经存储的数据。
如果您已经有一个没有索引的列,我建议您清除重复项的一种方法是使用临时表。通过从原始表中选择所有唯一(不同)名称来创建临时表。然后删除原始表中的所有内容,并将记录复制回来。此时,请考虑添加索引。