首页 > 解决方案 > PHP Mysql 以 1 递增,按某个字段分组

问题描述

看下面的表格

 +----+---------+---------+----+---------+---------+
| id |  name   | order   | one|  two    | three   |
+----+---------+---------+----+---------+---------+
|  1 | stan    |    1    |  5 |  suger  |   true  |
|  2 | kyle    |    1    |  4 |  coffe  |    yes  |
|  3 | stan    |    2    |  3 |  banana |    no   |
|  4 | kyle    |    2    |  4 |  orange |    false|
+----+---------+---------+----+---------+---------+

正如你从上面看到的,我有两个 stan 和两个 kyle。现在发生的情况是,如果我添加另一个 stan,我需要代码来查看订单的最大数量是多少,然后在订单字段中添加 +1 的行。

简而言之,向mysql表中添加一行,按名称将顺序增加一个+1组。我如何在 PHP 和 Mysql 中实现这一点?或者我认为只能在 Mysql Query 中处理?

所以,如果我需要添加以下信息,

5 stan(计算顺序) 3 香蕉真。

标签: phpmysql

解决方案


尽管按名称分组是个坏主意,因为多个人可以有相同的名字,但我认为解决方案如下所示:

select name, max(`order`)+1 
from orders 
group by name;

http://sqlfiddle.com/#!9/b25dbf/3/0

要将值添加到表中:

insert into orders(name,`order`) 
select name, max(`order`)+1 
from orders 
where name='stan'
group by name;

http://sqlfiddle.com/#!9/01db84/1

添加多个值:

insert into orders(name,`order`,one,two,three) 
select name, max(`order`)+1 , 3, 'banana', true
from orders 
where name='stan'
group by name;

推荐阅读