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

  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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,308评论 19 139
  • 50个常用的sql语句Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname...
    哈哈海阅读 4,976评论 0 7
  • 但我给听众讲解关于预算的正确办法,无论是有关企业预算还是国家预算的时候,我经常遇到同样的问题,我们公司的预算程序已...
    星铄阅读 936评论 0 0
  • 《金文诚〈孟子〉学习笔记101,4-6-2,公孙丑章句下6-2》 今天是丙申年戊戌月戊子日,十月初三,2016年...
    金吾生阅读 3,188评论 0 0
  • 佛说:前世的五百次回眸,才换来今生一次的擦肩而过。不知道我们上辈子注视了多久,今生今世才有缘遇见。 ...
    莫言靖毅阅读 2,817评论 0 6