2012-06-10 4 views
0

У меня есть база данных, которая содержит PlayerID, goals, yellows,reds То, что я хотел бы сделать, это приращение столбцов на основе playerID и даже (цели, желтый, красный) в один заявление. В настоящее время это делается один playerID в то время:Mysql обновления другое поле (столбец) для каждого идентификатора

UPDATE players SET $event=$event+1 WHERE id=$playerID 

где $event будет содержать имя поля (goals, yellows, reds)

То, что я хотел бы сделать, это иметь все это в одном операторе. Если вы представите себе игрок 1 получил желтый и игрок 2 получил красную, то я бы КАРТИНЫ заявления как:

UPDATE players SET (yellows=yellows+1,reds=reds+1) WHERE id=(1,2) 

Я знаю, что приведенный выше код неправильно, но я надеюсь, что это помогает дать представление о том, что я хотел бы делать. Каждый аргумент SET соответствует соответствующему аргументу id. Индивидуально было бы:

UPDATE players SET yellows=yellows+1 WHERE id=1 
    UPDATE players SET reds=reds+1 WHERE id=2 

Я не ищет:

UPDATE players SET (yellows=yellows+1,reds=reds+1) WHERE id IN (1,2) 
+1

Хотя вы можете попробовать сделать это с довольно сложная функция 'if', что случилось с использованием нескольких' обновлений'? –

+0

Ничего, просто интересно, есть ли лучший способ. С php mysql_query() как бы связать несколько UPDATES? Просто с запятой в конце: mysql_querry («UPDATE players SET $ event1 = $ event1 + 1 WHERE id = $ playerID1, UPDATE игроки SET $ event2 = $ event2 + 1 WHERE id = $ playerID2") ?? – nicky

+1

Нет, вы просто выполнили бы несколько 'mysql_query':' mysql_query («игроки UPDATE SET $ event1 = $ event1 + 1 WHERE id = $ playerID1"); mysql_query ("UPDATE players SET $ event2 = $ event2 + 1 WHERE id = $ playerID2"); ' –

ответ

1

Если вы хотите один UPDATE заявление:

UPDATE players 
SET yellows = CASE WHEN id = 1 
        THEN yellows + 1 
        ELSE yellows 
        END 
    , reds = CASE WHEN id = 2 
        THEN reds + 1 
        ELSE reds 
       END 
WHERE id IN (1, 2) ; 
Смежные вопросы