PHP Mysql Инкремент на 1 с группой по некоторому полю

0

Посмотрите ниже

 +----+---------+---------+----+---------+---------+
| 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|
+----+---------+---------+----+---------+---------+

Как вы видите сверху, у меня есть два стана и два кайла. Теперь, если я добавлю sther sther, мне нужен код, чтобы узнать, сколько из них максимальное число, и добавьте строку с добавлением +1 в поле заказа.

Короче говоря, добавьте строку в таблицу mysql, чтобы увеличить порядок по одной группе +1 по имени. Как достичь этого в PHP и Mysql? или я думаю, что можно обрабатывать только в запросе Mysql?

Итак, если мне нужно добавить следующую информацию,

5 stan (порядок расчета) 3 банана.

  • 0
    Невозможно сделать это за один запрос из-за возможной гонки данных.
  • 0
    это ... один запрос будет содержать другой запрос, хотя
Показать ещё 2 комментария
Теги:

1 ответ

2
Лучший ответ

Несмотря на то, что его плохая идея группироваться по имени, поскольку несколько людей могут иметь одно и то же имя, вот что я думаю, что решение будет выглядеть так:

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;
  • 0
    Вы, кажется, решение рядом, но мне нужно вставить, а не выбрать! как?
  • 1
    Как я уже упоминал в комментариях выше, этот запрос является предметом гонки данных.
Показать ещё 8 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню