如何让我的数据库使用MySQL重新排序id号码?

时间:2018-02-08 21:55:33

标签: mysql

我有一个玩家数据库,其中玩家ID不是连续的:

  

1球员1

     

2球员2

     

16球员16

     

27球员27

     

28球员28

我想保持玩家的顺序,但是改变他们的ID以使它们变为顺序(即以1为增量上升)。

可以使用SQL语句实现吗?

期望的结果:

  

1球员1

     

2球员2

     

3球员16

     

4球员27

     

5球员28

我有一个28,000行的数据库,其中25,000左右将被删除,我想按顺序移动剩余的3000个。

先谢谢你的帮助,我希望我解释得很好。

2 个答案:

答案 0 :(得分:1)

假设您的差距位于桌子的ID字段中,则根本不需要担心漏洞。 ID列应该完全无意义,并且纯粹用于将其他列中的值绑定在一起。在ID值中存在差距是很常见的,并且根本不会影响您的表格(除了美学)。

例如,您的第三列与您的ID相等。我假设这是您关心的实际数据(例如玩家标签)。为此播放器运行SELECT时,您可以根据 列运行查询。 player_id 2 id的玩家可以1 SELECT * FROM players WHERE player_id = 2; - 这完全没问题!

例如,如果您想要返回此播放器,则可以运行:

ID  | Name   |  player_id
-------------------------
1   | player |  2

可能会返回:

ID

上面的1 3000并不重要,因为您已经拥有了所关注的所有数据。它只是一个索引。

你说你要删除WHERE左右的行,即使没有“订单”本身,这仍然完全正常。只需使用https://github.com/xiph/vorbis子句根据表中的其他列之一进行删除。这将挑选出要删除的目标行(留下更多的空白)。

希望这有帮助!

答案 1 :(得分:0)

如果它只是一个简单的开启,你就可以在你的数据库上运行这样的东西:

update players as p 
set p.id = (
    SELECT count(*) from (select id from players) as sub 
    where p.id > sub.id
)

如果你想从1开始,请使用>=