Я работаю над программой в очередь игроков любого видео игры 4 игроковобновление MySQL несколько строк и столбцов с условием
это моя структура таблицы:
CREATE TABLE IF NOT EXISTS `ozbah_users` (
`user_id` int(11) NOT NULL AUTO_INCREMENT,
`user_name` varchar(255) NOT NULL,
`user_status` varchar(2) NOT NULL,
`user_priority` varchar(2) NOT NULL,
`user_event_id` int(11) NOT NULL,
`user_modifiedon` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`user_id`),
KEY `user_event_id` (`user_event_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=10 ;
+-----------------+--------------+------+-----+-------------------+-------------
---+
| Field | Type | Null | Key | Default | Extra
|
+-----------------+--------------+------+-----+-------------------+-------------
---+
| user_id | int(11) | NO | PRI | NULL | auto_increme
nt |
| user_name | varchar(255) | NO | | NULL |
|
| user_priority | varchar(2) | NO | | NULL |
|
| user_status | varchar(2) | NO | | NULL |
|
| user_event_id | int(11) | NO | MUL | NULL |
|
| user_modifiedon | timestamp | NO | | CURRENT_TIMESTAMP |
|
+-----------------+--------------+------+-----+-------------------+-------------
и это вставленный данные :
INSERT INTO `ozbah_users` (`user_id`, `user_name`, `user_priority`, `user_status`, `user_event_id`, `user_modifiedon`) VALUES
(1, 'A', 'A1', 'A', 1, '2015-06-26 19:22:45'),
(2, 'B', 'A2', 'A', 1, '2015-06-26 20:02:25'),
(3, 'C', 'A3', 'A', 1, '2015-06-26 20:22:16'),
(4, 'D', 'A4', 'A', 1, '2015-06-26 20:22:17'),
(5, 'E', 'W1', 'A', 1, '2015-06-26 20:22:19'),
(6, 'F', 'W2', 'A', 1, '2015-06-26 20:22:35'),
(7, 'G', 'W3', 'A', 1, '2015-06-26 20:22:55');
(8, 'H', 'W4', 'A', 1, '2015-06-26 20:32:15'),
mysql> SELECT * FROM `ozbah_users`
-> ORDER BY `ozbah_users`.`user_modifiedon` ASC;
+---------+-----------+---------------+-------------+---------------+-----------
----------+
| user_id | user_name | user_priority | user_status | user_event_id | user_modif
iedon |
+---------+-----------+---------------+-------------+---------------+-----------
----------+
| 1 | A | A1 | A | 1 | 2015-06-26
22:22:45 |
| 2 | B | A2 | A | 1 | 2015-06-26
23:02:25 |
| 3 | C | A3 | A | 1 | 2015-06-26
23:22:16 |
| 4 | D | A4 | A | 1 | 2015-06-26
23:22:17 |
| 5 | E | W1 | A | 1 | 2015-06-26
23:22:19 |
| 6 | F | W2 | A | 1 | 2015-06-26
23:22:35 |
| 7 | G | W3 | A | 1 | 2015-06-26
23:22:55 |
| 6 | H | W4 | A | 1 | 2015-06-26
23:22:35 |
| 7 | I | W5 | A | 1 | 2015-06-26
как вы видите user_priority
имеет 2 значения An
для активных или текущих игроков Wn
для ожидающих игроков п это номер очереди из списка игроков
Активные игроки An
от 1 до 4
ожидания игроков Wn
от 1 до каких-либо ограничений
условие, что Активные игроки 2 команды
команда 1: user_priority
A1 и A2
команда 2: user_priority
A3 и A4
Если команда проиграет игру, то оба игрока перейдут в конец списка ожидания, и первые 2 игрока в списке ожидающих перейдут в конец активного списка, и команда победителя переместится в начало в списке активных игрока
, например, команда 2 проигрывает так A3 и A4 будет двигаться к концу списка ожидания и первые 2 названия списка ожидания будут идти к концу активного списка
Я просто изменю имя игроков и user_modifiedon
Основной проблемой здесь является то, что я хочу, чтобы обновить (2 или 4 строки из активных игроков) и (все в списке ожидающих будут сдвинуты) это то, что мне нужно!
, потому что в этом случае мне нужно создать оператор обновления для каждой строки
+---------+-----------+---------------+-------------+---------------+-----------
----------+
| user_id | user_name | user_priority | user_status | user_event_id | user_modif
iedon |
+---------+-----------+---------------+-------------+---------------+-----------
----------+
| 1 | A | A1 | A | 1 | 2015-06-26
22:22:45 |
| 2 | B | A2 | A | 1 | 2015-06-26
23:02:25 |
| 3 | E | A3 | A | 1 | 2015-06-26
23:22:16 |
| 4 | F | A4 | A | 1 | 2015-06-26
23:22:17 |
| 5 | G | W1 | A | 1 | 2015-06-26
23:22:19 |
| 6 | H | W2 | A | 1 | 2015-06-26
23:22:35 |
| 7 | I | W3 | A | 1 | 2015-06-26
23:22:55 |
| 8 | C | W4 | A | 1 | 2015-06-26
23:42:18 |
| 9 | D | W5 | A | 1 | 2015-07-01
22:32:49 |
+---------+-----------+---------------+-------------+---------------+-----------
----------+
У меня есть создать его подобную вещь в Java с помощью 2 ArrayLists как это код Java
Эти 2 ArrayList будут содержать список активных и ожидающий игроков
public class ArrayListDemo {
public static void main(String[] args) {
// create an array list
ArrayList current = new ArrayList();
ArrayList waiting = new ArrayList();
// Display size
System.out.println("Initial size of current: " + current.size());
System.out.println("Initial size of waiting: " + waiting.size());
// add elements to the current array list
current.add("A");
current.add("B");
current.add("C");
current.add("D");
System.out.println("Size of current after additions: " + current.size());
// add elements to the waiting array list
waiting.add("E");
waiting.add("F");
System.out.println("Size of waiting after additions: " + waiting.size());
// display the array list
System.out.println("Contents of current: " + current);
System.out.println("Contents of waiting: " + waiting);
// Remove elements from current array list
current.add(waiting.get(0));
current.add(waiting.get(1));
System.out.println("Contents of current BEFORE Deleting: " + current);
System.out.println("Size of current BEFORE Deleting: " + current.size());
waiting.add(current.get(0));
waiting.add(current.get(1));
System.out.println("Contents of waiting BEFORE Deleting: " + waiting);
System.out.println("Size of waiting BEFORE Deleting: " + waiting.size());
current.remove(0);
System.out.println("current.get(0): "+current.get(0));
current.remove(0);
System.out.println("current.get(0): "+current.get(0));
System.out.println("Contents of current AFTER Deleting: " + current);
waiting.remove(0);
waiting.remove(0);
System.out.println("Contents of waiting AFTER Deleting: " + waiting);
}
}
и это выход
Initial size of current: 0
Initial size of waiting: 0
Size of current after additions: 4
Size of waiting after additions: 2
Contents of current: [A, B, C, D]
Contents of waiting: [E, F]
Contents of current BEFORE Deleting: [A, B, C, D, E, F]
Size of current BEFORE Deleting: 6
Contents of waiting BEFORE Deleting: [E, F, A, B]
Size of waiting BEFORE Deleting: 4
current.get(0): B
current.get(0): C
Contents of current AFTER Deleting: [C, D, E, F]
Contents of waiting AFTER Deleting: [A, B]
мой вопрос, что это лучший SQL-запрос для обновления нескольких строк и сохранить последовательность правильно, как мой пример?
Основной проблемой здесь является то, что я хочу, чтобы обновить (2 или 4 строки из активных игроков) и (все в списке ожидающих будут сдвинуты) это то, что мне нужно!
спасибо
Я бы сказал, что этот вопрос слишком долго в ее текущий формат. –
@ Основной проблемой здесь является то, что я хочу обновить (2 строки от активных игроков) и (все в списке ожидания будет сдвинуто), это то, что мне нужно! –
Здравствуйте, пожалуйста, упростите свой вопрос в соответствии с [настоящим руководством] (http://stackoverflow.com/help/mcve). – cychoi