这个问题困扰了我一段时间了,还好今天咨询老大把它给解决掉了
之前我知道的一种解决办法就是order by rand (),可这玩意谁用谁知道啊!如果数据量一旦大点,就慢的要死.
select * from `table` where `id`>(select rand()*(max(`id`)-min(`id`))+min(`id`) from `table`) limit 1;
#不过用子查询的话,速度太慢,可能是用不了索引
#还是得分开用两
select rand()*(max(`id`)-min(`id`))+min(`id`) from `table`; //round()
select * from `table` where `id`>@a limit 1;
参考mysql手册 http://dev.mysql.com/doc/refman/5.0/en/order-by-optimization.html
php产生一个0-1的数:mt_rand()/mt_getrandmax() ;
==============================================
点缀娱乐 点缀娱乐 点缀娱乐 点缀娱乐 点缀娱乐 点缀娱乐 点缀娱乐 点缀娱乐
==============================================