## 随机获取一条数据
```
select * from pin_ware where ware_id >= (
select
floor((select min(ware_id) from pin_ware) +
rand() * ((select max(ware_id) from pin_ware) - (select min(ware_id) from pin_ware)))
) limit 1;
```
((select max(ware_id) from pin_ware) - (select min(ware_id) from pin_ware) 表示数据区间a
(select min(ware_id) from pin_ware) 表示基数b,
关键在于区间a 和 随机数rand() 的相乘
函数 rand() 的范围是0~1,等于0时,最后的结果是基数b,等于1时,得到的结果是 max(ware_id)
## 随机获取多条数据
```
select * from pin_ware inner join (
select
floor((select min(ware_id) from pin_ware) +
rand() * ((select max(ware_id) from pin_ware) - (select min(ware_id) from pin_ware))) as id limit 50
) t on pin_ware.ware_id = t.id limit 5;
```
先获取50个随机的id,在从中取出需要的个数,比如5个。
这里需要用 inner join 而不能用left join,left join 会返回所有数据。