Mysql 删除没有ID的重复值
我有一张这样的桌子:Mysql 删除没有ID的重复值,mysql,Mysql,我有一张这样的桌子: uuid | username | first_seen | last_seen | score 在此之前,表使用升序的“player_id”列的主键。我删除了这个玩家id,因为我不再需要它了。我想让“uuid”成为主键,但是有很多重复项。我想从表中删除所有这些重复项,但保留第一行(根据行号,保留第一行) 我该怎么做?我到处都搜索过,但它们都显示了如果您有一个行ID列,该如何执行…我极力主张使用自动递增的整数主键。所以,我鼓励你回去。由于以下几个原因,这些方法非常有
uuid | username | first_seen | last_seen | score
在此之前,表使用升序的“player_id”列的主键。我删除了这个玩家id,因为我不再需要它了。我想让“uuid”成为主键,但是有很多重复项。我想从表中删除所有这些重复项,但保留第一行(根据行号,保留第一行)
我该怎么做?我到处都搜索过,但它们都显示了如果您有一个行ID列,该如何执行…我极力主张使用自动递增的整数主键。所以,我鼓励你回去。由于以下几个原因,这些方法非常有用:
- 它们告诉您行的插入顺序
- 它们对于主键更有效
- 因为主键在MySQL中是集群的,所以它们总是在最后
create temporary table tt as
select t.*
from tt
group by tt.uuid;
truncate table t;
alter table t add constraint pk_uuid primary key (uuid);
insert into t
select * from tt;
注意:我使用的是MySQL的一个(mis)功能,它允许您通过
一列对进行分组,同时通过分组对不在中的列进行拉取。我不喜欢此扩展,但您没有指定如何选择所需的特定行。这将为匹配行中的其他列提供值。还有其他方法可以让每个uuid
获得一行。谢谢,我现在就试试!此外,我删除了该ID,因为我想防止“uuid”的任何重复项。。。我是否应该将“uuid”设为唯一键,但仍保留主键的行号?哦,既然我已经删除了它,数据库包含7000到23000行(忘记了,但在这个范围内),那么是否有一个根据行号自动插入行ID的查询?您可以有一个自动递增的主键,并且仍然声明uuid
为唯一的。您的表很小,但您不会分配值,数据库会为自动递增的列分配值。