我有一张这样的表:
uuid | username | first_seen | last_seen | score
之前,该表使用了" player_id"的主键。提升的列。因为我不再需要它,我删除了这个player_id。我想制作' uuid'主键,但有很多重复。我想从表中删除所有这些重复项,但保留第一个(基于行号,第一行保留)。
我该怎么做?我到处搜索过,但如果你有一行ID列,他们都会展示如何做到这一点......
答案 0 :(得分:2)
我强烈建议使用自动递增的整数主键。所以,我鼓励你回去。这些有用的原因有几个,例如:
但是,你不必遵循这个建议。我的建议是将数据插入新表并重新加载到您想要的表中:
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的(错误)功能,允许您group by
一列,而不是group by
中的列。我不喜欢此扩展程序,但您没有指定如何选择所需的特定行。这将为匹配行中的其他列提供值。还有其他方法可以按uuid
获得一行。