为什么这个 随机抽取记录的 SQL 不工作?
时间:2011-05-28
来源:互联网
SQL code
取随机数的这部分没问题 (SELECT floor((SELECT RAND()) * (SELECT MAX(id) FROM `tbl`))) ,可以取到随机值, 但是整个语句却只能取到 id 很小范围以内(大概200以内)的记录, 是什么原因呢?
SELECT id,title FROM `tbl` WHERE id >= (SELECT floor((SELECT RAND()) * (SELECT MAX(id) FROM `tbl`))) ORDER BY id LIMIT 1;
取随机数的这部分没问题 (SELECT floor((SELECT RAND()) * (SELECT MAX(id) FROM `tbl`))) ,可以取到随机值, 但是整个语句却只能取到 id 很小范围以内(大概200以内)的记录, 是什么原因呢?
作者: grick 发布时间: 2011-05-28
SELECT id,title FROM `tbl`
WHERE id >= RAND()*(SELECT MAX(id) FROM `tbl`)
ORDER BY id LIMIT 1;
WHERE id >= RAND()*(SELECT MAX(id) FROM `tbl`)
ORDER BY id LIMIT 1;
作者: ACMAIN_CHM 发布时间: 2011-05-28
引用 1 楼 acmain_chm 的回复:
SELECT id,title FROM `tbl`
WHERE id >= RAND()*(SELECT MAX(id) FROM `tbl`)
ORDER BY id LIMIT 1;
SELECT id,title FROM `tbl`
WHERE id >= RAND()*(SELECT MAX(id) FROM `tbl`)
ORDER BY id LIMIT 1;
谢谢回复, 不过这个测试了跟我那个一样, 依然还是取到一些id比较小的记录. (一共不到4000条,但取到id在200以内的概率非常大,1000以上的基本上取不到)
作者: grick 发布时间: 2011-05-28
RAND() 每条记录时都会单独计算,如果你想随机取一条记录则应该
select * from tbl order by rand() limit 1;
作者: ACMAIN_CHM 发布时间: 2011-05-28
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28