为什么这个 随机抽取记录的 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; 收藏 求助 wince下使用C# 连接远程mysql数据库 MYSQL中能否实现两列数据A列在B列中的模糊查询 服务器崩溃了,MYSQL没备份,怎么恢复啊? WWWWA进来,谢谢 请教一个奇怪的mysql问题,大家帮忙看看是不是bug Mysql 怎样在日志中记录IP mysql 字符切割 为何我从msSQL7里面将数据导入到mySQL5后,中文变成了乱码 mysql导出数据到SQL server 2000 导入sql文件的问题 在 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;