我需要在留言表中查询最新的30条留言,然后这30条还要随机显示。

解决方案 »

  1.   

    这种用SQL语句好像实现不了。
      

  2.   

    用sql语句也能达到要求,如果表比较大可能会有点慢吧
      

  3.   

    先读出30条数据,在用php随机显示吧。
      

  4.   

    建个临时表,把最新的30条存进去,然后用select * form a order by rand() limit 5
      

  5.   

    所以还是在php里写个程序来随机抽取5条,或者专门弄张表就放最新的30条
      

  6.   

    order by rand()最好不用可以select * from xxxx order by timefield desc limit 30
    取出结果后放入数组,然后shuffle
      

  7.   

    我在想用SQL能不能做到呢?因为我那个读取出来的记录集是类来的。
      

  8.   

    SQL可以做到,只是真心不高效select * from (SELECT * FROM xxx order by xxx desc limit 30) t order by rand()
      

  9.   

    非要用的話:
    select <你的字段> from (select <你的字段> from <你的表> order by uid limit 30) as t order by rand() limit 5
      

  10.   

    按照select * from (SELECT * FROM xxx order by xxx desc limit 30) t order by rand()实现了,原本获取到的数据是一个类的集合,所以又转成SQL再拼接,再执行返回数组。
      

  11.   

    我觉得问题不大, 不是全表order by rand
      

  12.   

    补充一下,就可以了
    select * from (SELECT * FROM xxx order by xxx desc limit 30) t order by rand() limit 5