mysql---随机获取10%的数据
最近在研究从某张表中随机获取百分之十的数据,查询各大网站,基本上都使用的是rand()函数,完全看不懂,感觉也不太符合我的需求,所以决定自己研究一下,怎么实现此需求。
查询原始数据条数
select COUNT(1) FROM emp;
2766条原始数据,10%数据即为:276.66,取277条数据
原始数据
原始数据条数
首先,设置一变量;
SET @sql =NULL;
第二,查询表中数据的总数并乘以0.1(百分之十即0.1)-->获取10%的变量值
SELECTROUND(COUNT(1)*0.1,0) INTO @sqlFROM emp;
第三,拼接sql.
利用concat()函数,拼接sql,是指达到我们想要的结果。
concat('SELECT * FROM emp ORDER BY RAND() LIMIT ', @sql);
第四,执行;
PREPARE stmt from @sql;EXECUTE stmt;DEALLOCATE PREPARE stmt;
第五,运行结果即可得到我们所需要的数据
打印结果
最后,上完整代码:
SET @sql =NULL;SELECTROUND(COUNT(1)*0.1,0) INTO @sqlFROM emp;SET @sql=concat('SELECT * FROM emp ORDER BY RAND() LIMIT ', @sql);PREPARE stmt from @sql;EXECUTE stmt;DEALLOCATE PREPARE stmt;