1
weegc 2014-11-20 20:46:53 +08:00
个人觉得id是死的,不应该赋予太多的意义
just id |
2
xfwduke 2014-11-20 20:53:25 +08:00
说的不太清楚哦
order by id desc order by id asc 这样? |
3
aphay 2014-11-20 21:46:26 +08:00
沿着b+树索引反着读一遍。
|
4
ucaime 2014-11-20 22:00:47 +08:00
有个好玩的办法你可以试试
ALTER TABLE `test` ADD `newid` INT(11) UNSIGNED NULL DEFAULT NULL AFTER `id`; 再执行 SET @i := 0; UPDATE `test` SET `newid` = (@i:=(@i + 1)) order by time desc; 最后: ALTER TABLE `test` DROP `id`; ALTER TABLE `test` CHANGE `newid` `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY; 应该就行了。执行前做好备份 |
5
ucaime 2014-11-20 22:05:14 +08:00 1
@ucaime 忘了个问题,上面这个办法效率还算高,但是有个问题就是id完全重排了,没有实现你说的原位反转。
还有个办法,如果数据量没超过65535,且数据中没有什么特别字段,可以导出excel啊之类的,在excel里反转,然后导出csv啊什么,load进去就行了。 好吧,这个依然太笨 |
6
xz OP 谢谢各位,已经解决了
我是先复制一个表,然后把那个表里的id删了,再倒序复制数据到那个表里,然后再添加id,最后删除原表并重命名复制出的表就可以了 |
7
msg7086 2014-11-21 02:17:59 +08:00 via iPhone
Update Set ID = 1000000000 - ID
|