getAl"/> getAl">
Home > Backend Development > PHP Tutorial > mysql中,怎么每隔10条抽一条记录,多谢

mysql中,怎么每隔10条抽一条记录,多谢

WBOY
Release: 2016-06-13 12:17:59
Original
1062 people have browsed it

mysql中,如何每隔10条抽一条记录,谢谢!

<br />$sql="SELECT `cid` FROM `ks` where `cid`='' ORDER BY rand()  LIMIT 100";<br />$r = $db->getAll($sql);	<br />foreach($r as $v){<br />$sql="select `cid` from `member` WHERE `cid` not in (select `cid` from `ks`) ORDER BY rand()  LIMIT 1";<br />$row = $db->getRow($sql);<br />$cid=$v['cid'];<br />$sql="update  `ks` set `userid`='".$row['id']."' WHERE `cid`='$cid'";	<br />}<br />
Copy after login


这样能在member表里随机抽一条随机写入ks表

怎么才能做到member表里面如果CID相同就错开10条随机写入ks表?

或者代码应该怎么写才能达到这样的目的:
member表里有几千条数据,如果member表里CID相同的数据就错开10条写入ks表,不相同的就随机写入ks表

可能我表达得不是很清楚,这是一个考试随机安排座位的程序,cid是城市ID,如果城市ID相同就错开位置安排座位,防止作弊。

先谢谢了,因为分数没有多少了,给完也才20分,见凉!
------解决思路----------------------
$sql1 = "select * from `member` WHERE status = 0  LIMIT 1";<br />$r1 = $db->getRow($sql1); <br />$cur_cid = $r1['cid'];//查看当前第一个考生的所在城市<br />$sql4 = "insert into  `ks` (`cid`,`userid`) values ({$r1['cid']},{$r1['cid']})";<br />$db->query($sql4);//先插入第一个考生信息<br /><br />push_next($cur_cid);//接二连三的递推插入<br /><br />function push_next($cur_cid){<br />  $sql2 = "select * from `member` WHERE status = 0 and cid != {$cur_cid} LIMIT 1";<br />  $r2 = $db->getRow($sql2);<br />  $sql3 = "insert into  `ks` (`cid`,`userid`) values ({$r2['cid']},{$r2['cid']})";<br />  $db->query($sql3);<br />  push_next($sql2['cid']);<br />}
Copy after login


可以试试
------解决思路----------------------
首先,先要确定以下几个问题:
1.考场可以容纳多少考生?(即一次需要往KS表中写入的记录条数)
2.学员表中的学员来自几个城市(select distinct cid from members)

确定上上面两个问题,就可以确定程序会在每个城市里选取几位学员安排在同一考场。比如,考场可容纳30位考生,学员来自5个不同的城市,那么程序会在每个城市选取6位学员安排在同一考场。

创建一个二维数组,第一个维度是城市ID,第二个维度就是学员ID,做一个双重循环把学员写入KS表中即可。
具体代码我就不写了,下面把这个数组结构描述一下:

<br />candidates =  array (array("cid" => 1, "members" => array(1, 11, 21, 31)), <br />                                     array("cid" => 2, "members" => array(2, 12, 22, 32)),<br />                                     array("cid" => 3, "members" => array(3, 13, 23, 33)));<br />
Copy after login


这个只考虑到了左右相邻的考学来自不同的城市,你可以扩展一下,将前后相邻的判断加到代码逻辑中。

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template