mysql---随机获取10%的数据
最近在研究从某张表中随机获取百分之十的数据,查询各大网站,基本上都使用的是rand()函数,完全看不懂,感觉也不太符合我的需求,所以决定自己研究一下,怎么实现此需求。
查询原始数据条数
select COUNT(1) FROM emp;
2766条原始数据,10%数据即为:276.66,取277条数据
原始数据 原始数据条数首先,设置一变量;
SET @sql =NULL;
第二,查询表中数据的总数并乘以0.1(百分之十即0.1)-->获取10%的变量值
SELECT
ROUND(COUNT(1)*0.1,0) INTO @sql
FROM 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;
SELECT
ROUND(COUNT(1)*0.1,0) INTO @sql
FROM emp;
SET @sql=concat('SELECT * FROM emp ORDER BY RAND() LIMIT ', @sql);
PREPARE stmt from @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
(完)
网友评论