mysql 数据库 按列重新排序存储_如何使用MySQL来按顺序排列我的数据库重新排序ID号?...

本问题已经有最佳答案,请猛点这里访问。

我有一个播放器数据库,其中播放器ID不连续:

1 Player 1

2 Player 2

16 Player 16

27 Player 27

28 Player 28

我想维持玩家的顺序,但要更改其ID,以使它们成为顺序的(即以1为增量递增)。

可以使用SQL语句来实现吗?

所需结果:

1 Player 1

2 Player 2

3 Player 16

4 Player 27

5 Player 28

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

感谢您事先提供的帮助,我希望我能解释得足够好。

假设您的间隙位于表的ID字段中,那么您完全不必担心这些漏洞。 ID列应该完全没有意义,并且仅用于将其他列中的值绑定在一起。 ID值之间的差距非常普遍,并且完全不影响您的表格(除了美观之外)。

例如,您在第三列等于ID。我假设这是您关心的实际数据(例如播放器标签)。当为此播放器运行SELECT时,您将基于该列运行查询。 player_id为2的玩家可以将ID为1-完全可以!

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

SELECT * FROM players WHERE player_id = 2;

可能返回:

ID  | Name   |  player_id

-------------------------

1   | player |  2

上面1的ID无关紧要,因为您已经拥有了所有需要关注的数据。它只是一个索引。

您说要删除3000左右的行,即使本身没有"命令",这仍然是完全可以的。只需使用WHERE子句删除表中其他列之一即可。这将挑选出要删除的目标行(进一步留出空白)。

希望这可以帮助!

谢谢,我认为在其他桌子上ID字段可以保留漏洞。但是在游戏中使用了Player ID字段。您需要寻找一个ID,如果没有ID,它会弹出"找不到用户"的信息。在将游戏从Beta版中退出之前,我们想清除掉已死的帐户并向下移动自动递增功能(即我知道该怎么做。)清理数字。感谢您的快速回复!

即使player_id中的空格也将无关紧要,因为您只是针对特定ID进行搜索。就像搜索9999可能找不到任何东西一样,也许搜索17可能找不到任何东西。从字面上看,除了美学之外,您根本不需要做您想问的事情:)如果您真的想这样做,那仍然有可能,如其他答案所示。

阅读与我相同的弹出问题,我想我可能必须手工做。 T-T必须根据玩家的去向转移92个数据库。至少我已经有了更新代码来完全移动某人。一位完美主义者,宁愿摆脱所有的死角并整理清单。感谢您的帮助,现在我知道当我需要重新排序不会影响很多其他人的列表时该怎么做。

如果只是简单的关闭,那么您就可以在数据库上运行类似的代码了:

update players as p

set p.id = (

SELECT count(*) from (select id from players) as sub

where p.id > sub.id

)

或使用>=(如果要从1开始)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值