高洛峰2017-04-17 13:42:55
SELECT *
FROM 表名 AS t1
JOIN (
SELECT ROUND( RAND( ) * (SELECT MAX( id )FROM 表名 ) ) AS id
) AS t2
WHERE t1.id >= t2.id
ORDER BY t1.id ASC
LIMIT 50
阿神2017-04-17 13:42:55
这个东西得分开看了。
如果你的表记录没有上万级别。那么order by rand()
也可以接受。
但是表记录大的时候,order by rand()
效率极低。
所以建议在提问题的基础上,尽可能交代业务场景~~~。
PHP中文网2017-04-17 13:42:55
rand()这玩意,依稀记得,在《高性能mysql》中一再强调,避免使用。
结合实际情况,数据量不大几万十几万的,可以用用;
再大了,还是用程序实现,再去查询吧。