| 贵 州 学 习 网 |
|
以前在群里讨论过这个问题,比较的有意思.MySQL的语法真好玩.他们原来都想用php的实现随机,但取出多条好像要进行两次以上查询.翻了手册,找到了下面这个语句,可以完成任务了。 select * from table_name order by rand() limit 5; ="gu/ASWy|Lj.u [ 本 资 料 来 源 于 贵 州 学 习 网 网络编程MySQL教程 http://Www.gzU521.com ] ="gu/ASWy|Lj.u rand在手册里是这么说的: 你不能在一个order by子句用rand()值使用列,因为order by将重复计算列多次。然而在mysql3.23中,你可以做: select * from table_name order by rand(),这是有利于得到一个来自select * from table1,table2 where a=b and c<d order by rand() limit 1000的集合的随机样本。注意在一个where子句里的一个rand()将在每次where被执行时重新评估。 但我试了一下,8千条记录的表,执行一次需要0.08 sec,.慢了些 后来请教了google,得到如下代码 执行效率需要0.02 sec.可惜的是,只有mysql 4.1.*以上才支持这样的子查询. |
责任编辑:gzu521