0

さて、1列に数字があり、確認ブール値が0または1のこのmysqlテーブルがあり、約1,000行あるので、手動でできることではありませんが、とにかく... 行を最高値でソートして取得したい最初の 5 人の名前を入力し、それらの 5 人を別のテーブルの列に配置してから、それらを確認済みに設定し、テーブルに確認されていない人がなくなるまで続行します...例:

Name:Rank:Confirm
Bob:5000:0
James:34:0
Josh:59:1
Alex:48:0
Romney:500:0
Rolf:24:0
Hat:51:0

したがって、コードを実行すると、次のようになります。

Squad:Name1:Name2:Name3:Name4:Name5
1:Bob:Romney:Hat:Alex:James 

(ご覧のとおり、ジョシュは除外され、ロルフは低すぎました)

そして、ロルフは一人で他に誰もいないので、チームに入れられず、未確認のままになります...

私はmysqlのプロではないので、これに困惑し、せいぜいランクごとに全体を整理することができただけでした._.

編集:これで私がしたひどい試み:

<?php 
$parse = mysql_query("SELECT MAX(rank) AS rank FROM users AND confirm='0'");
mysql_query("Insert into squad (nameone)values($parse)");
mysql_query("Update squad set confirm = '1' where name = $parse");
?>
4

1 に答える 1

1

confirm は 1 または 0 のいずれかしかないと仮定します。

CREATE TABLE table2 (id INT PRIMARY KEY AUTO_INCREMENT, name varchar(255));
CREATE PROCEDURE rank()
BEGIN
   DECLARE count INT DEFAULT 1;
   WHILE count > 0 DO
      UPDATE table1 SET Confirm=2 WHERE Confirm=0 ORDER BY Rank DESC LIMIT 5; 
      INSERT INTO table2 (SELECT GROUP_CONCAT(Name) FROM table1 WHERE Confirm=2);
      UPDATE table1 SET Confirm=1 WHERE Confirm=2;
      SELECT count(*) FROM table1 WHERE Confirm=0;
   END WHILE;
END;

必要なときにいつでもプロシージャ rank() を呼び出します CALL rank();

于 2012-11-20T08:06:10.070 に答える