帖子ID如何重新排序
删除了很多广告帖子,而这些删除的帖子ID就空着了,我想把所有文章重新从1开始连续排序,找回浪费掉的帖子ID。当然同时得把后面多余的ID也删除,让重新发表的文章接着排序。类似的还有论坛版块的重排。从PHPWIND追踪至此。恳请老大解决:lol
[[i] 本帖最后由 xzqt 于 2008-2-21 08:28 编辑 [/i]] 我想了一下,除了单独写段程序来处理,没有简单的语句能够做到。还是劝你放弃这个做法,因为这样重新排列后,所有搜索引擎以前收录的帖子地址都会失效。 不用考虑搜索引擎,因为暂时拒绝蜘蛛。请老大给个方法。或插件
依次执行以下8句话,可以把主题重新排序。
执行之前一定作好数据备份,发现问题就恢复,不保证一定成功。[quote]ALTER TABLE `pw_threads` ADD `oldtid` MEDIUMINT UNSIGNED NOT NULL [/quote]
[quote]update pw_threads set oldtid=tid[/quote]
[quote]ALTER TABLE `pw_threads` DROP `tid` [/quote]
[quote]ALTER TABLE `pw_threads` ADD `tid` MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST [/quote]
[quote]update pw_posts p,pw_threads t set p.tid = t.tid where p.tid=t.oldtid[/quote]
[quote]update pw_attachs a,pw_threads t set a.tid = t.tid where a.tid=t.oldtid[/quote]
[quote]update pw_tmsgs tm,pw_threads t set tm.tid = t.tid where tm.tid=t.oldtid[/quote]
[quote]ALTER TABLE `pw_threads` DROP `oldtid` [/quote]
看懂的话,其他的xid排序也是同一思路。 谢谢,我试试。不懂再来打扰。。
对了,不会影响今后程序升级吧?
PS:老大真的不错。我会介绍其他人过来支持您
[[i] 本帖最后由 xzqt 于 2008-2-24 09:45 编辑 [/i]] 前面都很顺利,第7句:
update pw_tmsgs tm,pw_threads t set tm.tid = t.tid where tm.tid=t.oldtid
这句执行不了。
后面第8句也不敢执行。因为你说的要依次。
但貌似帖子ID重置了。不解
错误
SQL 查询:
UPDATE pw_tmsgs tm,
pw_threads t SET tm.tid = t.tid WHERE tm.tid = t.oldtid
MySQL 返回:
#1062 - Duplicate entry '2' for key 1
[[i] 本帖最后由 xzqt 于 2008-2-24 10:13 编辑 [/i]] 请问,这个帖子ID重排对phpwind7.0管用吗?谢谢 不知道对7.0有效否,没空试,你有兴趣自己试试。这个是主题ID重排,不是帖子ID重排。尽量不要重排主题ID,这样搜索引擎里的旧连接就失效了。 白大,这一句执行不了,能修正下吗?很需要这个
update pw_tmsgs tm,pw_threads t set tm.tid = t.tid where tm.tid=t.oldtid [quote]白大,这一句执行不了,能修正下吗?很需要这个
update pw_tmsgs tm,pw_threads t set tm.tid = t.tid where tm.tid=t.oldtid
[size=2][color=#999999]aamp4 发表于 2011-7-26 14:06[/color] [url=http://www.bbstobbs.com/redirect.php?goto=findpost&pid=2004&ptid=16][img]http://www.bbstobbs.com/images/common/back.gif[/img][/url][/size][/quote]
这个帖子比较久了,以前的语句未必适合现在的版本,请勿试。
我在其他帖子说过,今后不再回应关于xid重排的咨询。sorry
页:
[1]