时间:2021-07-01 10:21:17 帮助过:7人阅读
SELECT * FROM table_name AS r1 JOIN (SELECT ROUND(RAND() * (SELECT MAX(id) FROM table_name)) AS id) AS r2 WHERE r1.id >= r2.id ORDER BY r1.id ASC LIMIT 5;
执行效率需要0.02 sec.可惜的是,只有mysql 4.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 '正在处理数据,当前为'.$s.'条......'; } else { echo '完成所有数据处理 再随机排序一次'; } ?>