本帖最后由 grick 于 2011-05-28 12:32:05 编辑

解决方案 »

  1.   

    SELECT id,title FROM `tbl` 
    WHERE id >=  RAND()*(SELECT MAX(id) FROM `tbl`)  
    ORDER BY id LIMIT 1;
      

  2.   


    谢谢回复, 不过这个测试了跟我那个一样, 依然还是取到一些id比较小的记录. (一共不到4000条,但取到id在200以内的概率非常大,1000以上的基本上取不到)
      

  3.   


    RAND() 每条记录时都会单独计算,如果你想随机取一条记录则应该select * from tbl order by rand() limit 1;
      

  4.   

    SELECT id,title 
    FROM `tbl` , (select rand()*max(id) as k from `tbl`) b
    WHERE id >=  k
    ORDER BY id LIMIT 1;