mysql中,怎麼每隔10條抽一條記錄,多謝

來源:互聯網
上載者:User
mysql中,如何每隔10條抽一條記錄,謝謝!

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


這樣能在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";
$r1 = $db->getRow($sql1);
$cur_cid = $r1['cid'];//查看當前第一個考生的所在城市
$sql4 = "insert into `ks` (`cid`,`userid`) values ({$r1['cid']},{$r1['cid']})";
$db->query($sql4);//先插入第一個考生資訊

push_next($cur_cid);//接二連三的遞推插入

function push_next($cur_cid){
$sql2 = "select * from `member` WHERE status = 0 and cid != {$cur_cid} LIMIT 1";
$r2 = $db->getRow($sql2);
$sql3 = "insert into `ks` (`cid`,`userid`) values ({$r2['cid']},{$r2['cid']})";
$db->query($sql3);
push_next($sql2['cid']);
}


可以試試
------解決思路----------------------
首先,先要確定以下幾個問題:
1.考場可以容納多少考生?(即一次需要往KS表中寫入的記錄條數)
2.學員表中的學員來自幾個城市(select distinct cid from members)

確定上上面兩個問題,就可以確定程式會在每個城市裡選取幾位學員安排在同一考場。比如,考場可容納30位考生,學員來自5個不同的城市,那麼程式會在每個城市選取6位學員安排在同一考場。

建立一個二維數組,第一個維度是城市ID,第二個維度就是學員ID,做一個雙重迴圈把學員寫入KS表中即可。
具體代碼我就不寫了,下面把這個數組結構描述一下:


candidates = array (array("cid" => 1, "members" => array(1, 11, 21, 31)),
array("cid" => 2, "members" => array(2, 12, 22, 32)),
array("cid" => 3, "members" => array(3, 13, 23, 33)));


這個只考慮到了左右相鄰的考學來自不同的城市,你可以擴充一下,將前後相鄰的判斷加到代碼邏輯中。
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.