删除没有ID的重复值

时间:2015-07-26 13:24:16

标签: mysql

我有一张这样的表:

   uuid | username | first_seen | last_seen | score

之前,该表使用了" player_id"的主键。提升的列。因为我不再需要它,我删除了这个player_id。我想制作' uuid'主键,但有很多重复。我想从表中删除所有这些重复项,但保留第一个(基于行号,第一行保留)。

我该怎么做?我到处搜索过,但如果你有一行ID列,他们都会展示如何做到这一点......

1 个答案:

答案 0 :(得分:2)

我强烈建议使用自动递增的整数主键。所以,我鼓励你回去。这些有用的原因有几个,例如:

  • 他们告诉你行的插入顺序。
  • 它们对主键更有效。
  • 因为主键是在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的(错误)功能,允许您group by一列,而不是group by中的列。我不喜欢此扩展程序,但您没有指定如何选择所需的特定行。这将为匹配行中的其他列提供值。还有其他方法可以按uuid获得一行。