ホームページ > バックエンド開発 > PHPチュートリアル > mysqlで10レコードごとにレコードを抽出するにはどうすればよいですか?

mysqlで10レコードごとにレコードを抽出するにはどうすればよいですか?

WBOY
リリース: 2016-06-13 12:17:59
オリジナル
1062 人が閲覧しました

mysql で 10 レコードごとに 1 レコードを抽出するにはどうすればよいですか?

<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 />
ログイン後にコピー


このようにして、メンバー テーブルからランダムに 1 つを選択し、ks テーブルに書き込むことができます。

CIDはメンバーテーブル内で同じですか?

または、この目標を達成するにはコードをどのように記述する必要があります:
メンバー テーブル内に同じ CID を持つデータが 10 ずつずらされている場合、メンバー テーブルには数千のデータがあります。異なる場合は 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 />}
ログイン後にコピー


試してみてください
-----解決策のアイデア----------------------
まず、まず次の質問を決めてください:
1. 試験室には何人の受験者を収容できますか? (つまり、一度に KS テーブルに書き込む必要があるレコードの数)
2. Student テーブル内の学生の出身都市は何ですか (メンバーから個別の CID を選択します)

上記 2 つの質問を確認すると、プログラムは各都市で数人の学生を選択し、同じ試験室に配置すると判断できます。たとえば、試験室に 30 人の受験者を収容でき、学生が 5 つの異なる都市から来ている場合、プログラムは各都市で 6 人の学生を選択し、同じ試験室に配置します。

2 次元配列を作成します。最初の次元は都市 ID、2 番目の次元は学生 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 />
ログイン後にコピー


これは、左右の隣接する検査が異なることのみを考慮しています。これを展開して、隣接する判定をコード ロジックに追加できます。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート