试试看,如果表数据过大不建议使用ORDER BY RAND(),你先试试这两句SQL行不行。希望对你有帮助.
SELET `id`,`tid`,`subject`,`message`,`dateline` FROM `posts` WHERE `tid`=NULL ORDER BY `tid`,`dateline`
SELET `id`,`tid`,`subject`,`message`,`dateline` FROM `posts` WHERE `tid`=!NULL ORDER BY RAND() LIMIT 1
select t2.* from (select tid,max(dateline) maxDateline from posts group by tid order by maxDateline desc limit 10)t1 inner join posts t2 on t1.tid=t2.tid and t1.maxDateline=t2.dateline
目测1楼第一句不对,没有保证不同的主题,我是这么写的:
其实dateline和id应该顺序是一致的,可以考虑换成id,id上主键应该效率更高:
第2句个人觉得最好还是不用ORDER BY RAND(),数据量稍微多一点就会效率低下,因为这样写可以会导致多次扫描,这样写可能会好一点:
试试看,如果表数据过大不建议使用
ORDER BY RAND()
,你先试试这两句SQL
行不行。希望对你有帮助.楼上第一条回答目测不对吧,以下个人见解,欢迎点评指教