暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL从表中随机返回n行数据

原创 只是甲 2020-08-31
886

备注:测试数据库版本为MySQL 8.0

如需要scott用户下建表及录入数据语句,可参考:
scott建表及录入数据sql脚本

问题:
从表中随机返回n条记录。可以修改下面的语句,要求下次执行时产生不同的结果集。

select ename,job from emp;
mysql> select ename,job from emp; +--------+-----------+ | ename | job | +--------+-----------+ | SMITH | CLERK | | ALLEN | SALESMAN | | WARD | SALESMAN | | JONES | MANAGER | | MARTIN | SALESMAN | | BLAKE | MANAGER | | CLARK | MANAGER | | SCOTT | ANALYST | | KING | PRESIDENT | | TURNER | SALESMAN | | ADAMS | CLERK | | JAMES | CLERK | | FORD | ANALYST | | MILLER | CLERK | +--------+-----------+ 14 rows in set (0.00 sec)

解决方案:
同时使用内置的rand函数、limit和order by;

select ename,job from emp order by rand() limit 5;
mysql> select ename,job from emp order by rand() limit 5; +-------+-----------+ | ename | job | +-------+-----------+ | JAMES | CLERK | | FORD | ANALYST | | KING | PRESIDENT | | CLARK | MANAGER | | ADAMS | CLERK | +-------+-----------+ 5 rows in set (0.00 sec) -- 第二次执行与第一次结果集不同 mysql> select ename,job from emp order by rand() limit 5; +--------+----------+ | ename | job | +--------+----------+ | SMITH | CLERK | | WARD | SALESMAN | | MARTIN | SALESMAN | | BLAKE | MANAGER | | JAMES | CLERK | +--------+----------+ 5 rows in set (0.00 sec)
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论