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

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

WBOY
Freigeben: 2016-06-13 12:17:59
Original
1063 Leute haben es durchsucht

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 />
Nach dem Login kopieren


这样能在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 />}
Nach dem Login kopieren


可以试试
------解决思路----------------------
首先,先要确定以下几个问题:
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 />
Nach dem Login kopieren


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

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage