Home  >  Article  >  Backend Development  >  求一sql语句的写法

求一sql语句的写法

WBOY
WBOYOriginal
2016-06-23 14:03:55853browse

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


回复讨论(解决方案)

什么叫随机显示?

什么叫随机显示?

我再补充一下,首先我要在前台显示5条信息,但是这5条信息,必须在留言表所有信息中最新的30条里再随机获取5条出来显示。

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

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

用sql语句也能达到要求,如果表比较大可能会有点慢吧
可不可以举个例子。

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

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

建个临时表,把最新的30条存进去,然后用select * form a order by rand() limit 5
如果每次刷新都这样执行一次,不是很慢么

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

order by rand()最好不用

可以

select * from xxxx order by timefield desc limit 30
取出结果后放入数组,然后shuffle

所以还是在php里写个程序来随机抽取5条,或者专门弄张表就放最新的30条
我在想用SQL能不能做到呢?因为我那个读取出来的记录集是类来的。

SQL可以做到,只是真心不高效

select * from (SELECT * FROM xxx order by xxx desc limit 30) t order by rand()

非要用的?:
select  from (select  from  order by uid limit 30) as t order by rand() limit 5

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

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

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

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

引用 13 楼 ustb 的回复:SQL可以做到,只是真心不高效
SQL code?1select * from (SELECT * FROM xxx order by xxx desc limit 30) t order by rand()

要少用嵌套查?。。。

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

引用 13 楼 ustb 的回复:SQL可以做到,只是真心不高效
SQL code?1select * from (SELECT * FROM xxx order by xxx desc limit 30) t order by rand()
同意!

你30条全部随机显示,那就没有特别的效果了,到头来文字还是一样。

如果你只显示10条,然后在30条里面随机。随机的效果才更发了。

补充一下,就可以了

select * from (SELECT * FROM xxx order by xxx desc limit 30) t order by rand() limit 5


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

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn