时间:2021-05-25
MySQL如何从表中取出随机数据
以前在群里讨论过这个问题,比较的有意思.mysql的语法真好玩.
他们原来都想用PHP的实现随机,但取出多条好像要进行两次以上查询.
翻了手册,找到了下面这个语句,可以完成任务了
SELECT*FROMtable_nameORDERBYrand()LIMIT5;
rand在手册里是这么说的:
RAND()
RAND(N)
返回在范围0到1.0内的随机浮点值。如果一个整数参数N被指定,它被用作种子值。
mysql>selectRAND();
->0.5925
mysql>selectRAND(20);
->0.1811
mysql>selectRAND(20);
->0.1811
mysql>selectRAND();
->0.2079
mysql>selectRAND();
->0.7888
你不能在一个ORDERBY子句用RAND()值使用列,因为ORDERBY将重复计算列多次。然而在MySQL3.23中,你可以做:SELECT*FROMtable_nameORDERBYRAND(),这是有利于得到一个来自SELECT*FROMtable1,table2WHEREa=bANDc<dORDERBYRAND()LIMIT1000的集合的随机样本。注意在一个WHERE子句里的一个RAND()将在每次WHERE被执行时重新评估。
但我试了一下,8千条记录的表,执行一次需要0.08sec,.慢了些
后来请教了google,得到如下代码
执行效率需要0.02sec.可惜的是,只有mysql4.1.*以上才支持这样的子查询.
以下是php代码:
<?//数据库连接就不写在这里面了$s = isset( $_GET['s'] )?$_GET['s']:0;$e = isset( $_GET['e'])?$_GET['e']:50;$count =85000;if( $s < $count ){ $sql = "select * from 表前缀_info where isget =0 order by id desc limit $s,$e "; $query = mysql_query( $sql ); while( $rs = mysql_fetch_array( $query ) ) { $id = $rs['id']; $sss = $rs['sss']; $typeid = $rs['typeid']; $isget = $rs['isget']; $sql = "insert into 表前缀_info_bak (id,表前缀,typeid,isget) values('$id','$sss','$typeid','$isget')"; mysql_query( $sql ) ; echo $sql; //exit; $sqlu = "update 表前缀_info set isget=1 where id =".$rs['id']; mysql_query( $sqlu ); } echo '<meta http-equiv="refresh" content="0;url=rand.php?s='.($s+50).'&e=50">正在处理数据,当前为'.$s.'条......';}else{ echo '完成所有数据处理 <a href=rand.php>再随机排序一次</a>';}?>声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了Python实现生成随机数据插入mysql数据库的方法。分享给大家供大家参考,具体如下:运行结果:实现代码:importrandomasrimpo
Mysql中'employee'表内容如下:#__Desc__=从数据库中导出数据到excel数据表中importxlwtimportpymysqlclassM
曾经做过一个从数据库中随机抽取记录的程序,在其中用到了随机数编程,下面把ASP中随机抽取随机数的程序写下来供大家参考。关于随机数,请参看以下资料:Rnd函数描述
本文实例实现了php+mysql数据库随机重排的方法,可将表中的所有数据随机读出来一次之后再进行随机保存到另一个表,从而达到了记录随机的功能。主要实现代码如下:
MySQL常见错误代码及代码说明一览表:1005:创建表失败1006:创建数据库失败1007:数据库已存在,创建数据库失败