1、所使用的基本知识

RAND(); //获取[0,1)之间的数据,是一个浮点数据
ROUND(n); //MySQL四舍五入函数
FLOOR(n); //向下取整函数,取小于等于n的数
ceil(n); //向上取整,取大于等于n的数

随机取一个范围内的数据常见的方式就是
round( rand() * (max - min + min) )

2、SQL语句

##多表连接实现随机数据的读取
SELECT student.id,stu_name,stu_age,stu_addr FROM student AS student INNER JOIN (
			## SELCT命令会形成一个内存中虚拟的表,所以可以对内存中虚拟的表进行多表连接
			SELECT ROUND(RAND() * ((SELECT MAX(id) FROM student)-(SELECT MIN(id) FROM student))+(SELECT MIN(id) FROM student)) AS id
	) AS temp
WHERE student.id >= temp.id  ## 连接的条件
ORDER BY student.id LIMIT 10;  ## 排序并得到指定条数

测试

数据库中总的数据量,一共18条

mysql 生成随机时间 mysql 随机取值_java-ee


随机选取的数据量

mysql 生成随机时间 mysql 随机取值_mysql_02

总结

在进行多表连接查询的时候,我们通常使用的是两张实实在在的表,而使用SELECT查询语句的时候也会产生一个虚拟的表,同样可以进行多表连接查询的操作,并且这张虚拟的表存在内存中,所以执行效率会大大提升。