使用php和Mysql按最大数量订购并确认

使用php和Mysql按最大数量订购并确认,php,mysql,post,rows,Php,Mysql,Post,Rows,我有一个mysql表,在一列中有数字,确认布尔值为0或1,我有大约1000行,所以我不能手动执行,但无论如何。。。 我想按最大值对行进行排序,获取前5个人的姓名,将这5个人放在列的另一个表中,然后将他们设置为“已确认”并继续,直到表中没有未确认的人。。。 例: 因此,当您运行代码时,它将执行以下操作: Squad:Name1:Name2:Name3:Name4:Name5 1:Bob:Romney:Hat:Alex:James (正如你所看到的,乔希被排除在外,而罗尔夫太低了) 由于罗尔夫是

我有一个mysql表,在一列中有数字,确认布尔值为0或1,我有大约1000行,所以我不能手动执行,但无论如何。。。 我想按最大值对行进行排序,获取前5个人的姓名,将这5个人放在列的另一个表中,然后将他们设置为“已确认”并继续,直到表中没有未确认的人。。。 例:

因此,当您运行代码时,它将执行以下操作:

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");
?>

假设确认只有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()
callrank()

是的,我试着按等级组织,然后使用explode+foreach将变量拆分,然后每5个插入一个(在剩下剩余的部分后被难住了),但后来我发现,我尝试将值排序到团队中的方式太乱了,感觉可以用mysql或大部分mysql来完成。>不管怎样,发布你的尝试,这样我们就有了一个出发点,这是我得到的最好的结果,事实上它没有达到我想要的效果,当我意识到我不能告诉它添加到第一个squadneat上时,我被难住了,但我猜第一行是没有必要的?我可以在mysql查询的“Begin”和“End”标记之间使用吗?(这是出于好奇)如果您已经有一个表,那么第一行
CREATE TABLE
是不必要的。您必须遍历该表,因此需要存储过程
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;