rand by order如何检索掉某些ID为空的数据条? 本帖最后由 mumubangditu 于 2012-03-06 17:14:57 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这样没办法,因为你的是整段的ID被清除 ID=14794 - ID=22856 这样不是平均分布,无法利用RAND随便来查询ID。 你需要用其它算法。如果你的表结果中是固定已知少了这一段,则可以跳过这一段。 汗~~问题是我的表少的不止这一段,万能的狼头大哥,其它算法是指什么?有没有可用的代码?或者实在麻烦的话,如何重编 auto increase 的 ID号?谢谢。 如何重编 auto increase 的 ID号?备份数据->清空表->ALTER TABLE dd AUTO_INCREMENT = 1->导入数据 为什么要引用r2表直接SELECT MAX(id)*rand() FROM `my_table`; 天啊,一定要倒进倒出那么复杂的吗?29W条记录,好几百MB呢……这个方法太原始了吧…… 你的问题简化来说就是1239101719这么几个数中实现随机取记录,但你的记录是 30万条,无法直接用 select * from table1 limit X,1 (不过你还是可以试一下效率)想不出什么好的算法。 网上找了一个重编ID的方法SET @num := 0;UPDATE your_table SET id = @num := (@num+1);ALTER TABLE your_table AUTO_INCREMENT =1;帮忙看看有没有风险? 会把数据库弄乱。虽然有备份,但是用的是VPS,有速度限制,流量限制,所以我非常不愿意像3楼所说的那样,清空后再重新编号。 问一个比较菜的问题,,MYSQL负载能支持多大的数据量? 求教MySQL_Front 配置出错 大家帮帮忙啊 有什么方法能够限制数据库中的某条记录不被删除? 自增字段怎么设值 php+mysql连接的问题 如何设计这个表?? ap 是linux+apache+PHP,db是:windows+mysql,怎么配置链接mysql? 怎么安装mysql呀。。。。。。。。 mysql数据导入的问题,csv mysql驱动32位与64位问题 Mysql中写循环SQL语句
或者实在麻烦的话,如何重编 auto increase 的 ID号?谢谢。
备份数据->清空表->ALTER TABLE dd AUTO_INCREMENT = 1->导入数据
SELECT MAX(id)*rand() FROM `my_table`;
这个方法太原始了吧……
2
3
9
10
17
19这么几个数中实现随机取记录,但你的记录是 30万条,无法直接用 select * from table1 limit X,1 (不过你还是可以试一下效率)
想不出什么好的算法。
UPDATE your_table SET id = @num := (@num+1);
ALTER TABLE your_table AUTO_INCREMENT =1;帮忙看看有没有风险?