SELECT * FROM `table`
WHERE id >= (SELECT floor( RAND() * ((SELECT MAX(id) FROM `table`)-(SELECT MIN(id) FROM `table`)) + (SELECT MIN(id) FROM `table`)))
ORDER BY id LIMIT 1;
这个也要1.2秒
本问题来自阿里云开发者社区的【11大垂直技术领域开发者社群】。 https://developer.aliyun.com/article/706511 点击链接欢迎加入感兴趣的技术领域群。
问题背景是这样,一张mysql数据表中有三个特定int字段,代表着三种不同类型的数据,然后字段1数据被抽取的概率为20%,字段2数据被抽取的概率为30%,字段3数据被抽取的概率为50%,要从这个表中随机抽10条数据,sql语句该如何描写?注意是随机取数据!!即每个字段所取得的数据的数量不固定,但总数量为10谢谢!!
答案来源于网络,供您参考
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。