主键为id 还有一个字段是time
id越大对应的time也越大
怎么把id重新反序排列呢?
id越大对应的time也越大
怎么把id重新反序排列呢?
|
weegcNov 20, 2014
1
个人觉得id是死的,不应该赋予太多的意义
just id |
|
xfwdukeNov 20, 2014
2
说的不太清楚哦
order by id desc order by id asc 这样? |
|
aphayNov 20, 2014
3
沿着b+树索引反着读一遍。
|
|
ucaimeNov 20, 2014
4
有个好玩的办法你可以试试
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 忘了个问题,上面这个办法效率还算高,但是有个问题就是id完全重排了,没有实现你说的原位反转。
还有个办法,如果数据量没超过65535,且数据中没有什么特别字段,可以导出excel啊之类的,在excel里反转,然后导出csv啊什么,load进去就行了。 好吧,这个依然太笨 |
|
6
谢谢各位,已经解决了
我是先复制一个表,然后把那个表里的id删了,再倒序复制数据到那个表里,然后再添加id,最后删除原表并重命名复制出的表就可以了 |
|
msg7086Nov 21, 2014 via iPhone
7
Update Set ID = 1000000000 - ID
|