SQL实战: 如何高效获取随机id
2018-04-07 本文已影响0人
一个有想法的人
- 从一个拥有自增id(
id>0
)的表T里,随机取一条数据?
方案: 传入一个随机数r,用此随机数对最大的id进行取余
select * from T where id >= (select r%max(id) from T) limit 1;
- 从一个拥有自增id(
id>0
)的表T里,在指定范围CONDITION内随机取一条数据?
方案: 传入一个随机数r, 生成指定范围内【即id区间】的一个随机数即可
select * from T where CONDITION and id >= (select min(id) + IFNULL(r%(max(id) -min(id)), 0) from T where CONDITION) limit 1
注: 当max(id)和min(id)相同时,r%(max(id)-min(id)结果为NULL