美文网首页
SQL实战: 如何高效获取随机id

SQL实战: 如何高效获取随机id

作者: 一个有想法的人 | 来源:发表于2018-04-07 15:14 被阅读0次
    1. 从一个拥有自增id(id>0)的表T里,随机取一条数据?

    方案: 传入一个随机数r,用此随机数对最大的id进行取余

    select * from T where id >= (select r%max(id) from T) limit 1;
    
    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

    相关文章

      网友评论

          本文标题:SQL实战: 如何高效获取随机id

          本文链接:https://www.haomeiwen.com/subject/ffjyhftx.html