mysql 返回随机行_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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值