## 隨機獲取一條數據
```
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 會返回所有數據。