MySQL随机获取多条数据

105 阅读1分钟

一、简单使用random()

SELECT * from usertb order by rand() LIMIT 100

效率相当相当的低,效率不行,切忌使用。



二、随机获取连续的多条数据

SELECT * FROM 表名 AS t1 JOIN 
(SELECT ROUND(RAND() * ((SELECT MAX(id) FROM `表名`)-(SELECT MIN(id) FROM 表名))+(SELECT MIN(id) FROM 表名)) AS id) AS t2 
WHERE t1.id >= t2.id ORDER BY t1.id LIMIT 100

注意,要求id为int或float这种可以做加减法的类型。



三、高效一点的随机获取多条数据

SELECT * FROM 表名 WHERE id >= ((SELECT MAX(id) FROM 表名)-(SELECT MIN(id) FROM 表名)) * RAND() + (SELECT MIN(id) FROM 表名) LIMIT 100

同样要求id为int或float这种可以做加减法的类型。