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

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

WBOY
リリース: 2016-06-23 13:36:47
オリジナル
1490 人が閲覧しました

$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'";	}
ログイン後にコピー


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

メンバー テーブル内の CID が同じ場合、10 個のランダムなエントリを ks テーブルにずらして配置するにはどうすればよいでしょうか。

または、この目標を達成するにはコードをどのように記述する必要がありますか:
メンバー テーブルに同じ CID を持つデータが 10 ずつずらして配置されている場合、そのデータは ks に書き込まれます。テーブルが同じでない場合は、ランダムに ks テーブルに書き込まれます。都市IDは同じで、座席は不正行為を防ぐために千鳥状に配置されます。

ポイントがあまり残ってなくて、あげても20ポイントしかもらえなかったので、よろしくお願いします!

ディスカッションへの返信(解決策)

数表のcidは空ですか? ksテーブルのcidも空ですか?それともそのようなものですか?少なくともテーブル構造をわかりやすく説明してください

上の兄さん、返信ありがとうございます!

数値テーブルの cid は空ではありません。データは常に追加されます。

ks テーブルの cid は空です。
ID cid userid

member。 table:

userid cid

$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']);}
ログイン後にコピー


You can try

//追加の統計を番号に追加する必要があります(学生が試験室に割り当てられているかどうかを判断するため)(0:未割り当ての試験室、1:すでに割り当てられている)割り当てられた診察室)

ありがとうございます!

KS テーブルにすでに 30 の座席番号がある場合はどうなりますか?同じ CID を持つユーザーを 5 桁ずつずらして KS テーブルに割り当てるにはどうすればよいですか?



continue 9;

を挿入する代わりに、まず次の質問を決定する必要があります:

1. 試験室には何人の受験者を収容できますか? (つまり、一度にKSテーブルに書き込む必要があるレコードの数)
2. Studentテーブルの学生は何都市から来たのか(メンバーから個別のcidを選択)

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

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


これは、左右の隣接する試験が異なる都市からのものであることのみを考慮しています。これを展開して、隣接する判定を追加できます。コードロジックで。

席を配置するときは、この 2 次元配列をたどって、1、2、3、11、12、13、21、22、23、31、32、33 を入力することになります

まず、次の質問を決定してください:

1. 試験室には何人の受験者を収容できますか? (つまり、一度にKSテーブルに書き込む必要があるレコードの数)
2. Studentテーブルの学生は何都市から来たのか(メンバーから個別のcidを選択)

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

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


これは、左右の隣接する試験が異なる都市からのものであることのみを考慮しています。これを展開して、隣接する判定を追加できます。コードロジックで。

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