为什么这个 随机抽取记录的 SQL 不工作? 本帖最后由 grick 于 2011-05-28 12:32:05 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 SELECT id,title FROM `tbl` WHERE id >= RAND()*(SELECT MAX(id) FROM `tbl`) ORDER BY id LIMIT 1; 谢谢回复, 不过这个测试了跟我那个一样, 依然还是取到一些id比较小的记录. (一共不到4000条,但取到id在200以内的概率非常大,1000以上的基本上取不到) RAND() 每条记录时都会单独计算,如果你想随机取一条记录则应该select * from tbl order by rand() limit 1; SELECT id,title FROM `tbl` , (select rand()*max(id) as k from `tbl`) bWHERE id >= kORDER BY id LIMIT 1; 如何导出mysql数据 求一个MySQL从入门到精通的学习文档 将结果集输出成指定格式的文件,如csv之类 服务器崩溃了,MYSQL没备份,怎么恢复啊? 请各位说说用MY sql的原因? 如何在一个存在的表里增加一个新的字段 关于MySQL中创建数据库的问题???? 就ado聯接mysql的問題大家討論一下 求助——mysql timestamp问题 mysql主从复制 忽略语句的问题 在 navicat 和 phpadmin 中 如何设定触发器 全文搜索的问题
WHERE id >= RAND()*(SELECT MAX(id) FROM `tbl`)
ORDER BY id LIMIT 1;
谢谢回复, 不过这个测试了跟我那个一样, 依然还是取到一些id比较小的记录. (一共不到4000条,但取到id在200以内的概率非常大,1000以上的基本上取不到)
RAND() 每条记录时都会单独计算,如果你想随机取一条记录则应该select * from tbl order by rand() limit 1;
FROM `tbl` , (select rand()*max(id) as k from `tbl`) b
WHERE id >= k
ORDER BY id LIMIT 1;