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

备注:测试数据库版本为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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值