2016-06-12 3 views
0

У меня есть эти два запроса:Как обновить столбец для двух разделенных идентификаторов?

$dbh 
->prepare("UPDATE user 
      SET reputation = reputation - 15 
      WHERE id = ?") 
->execute(array($old_author)); 

$dbh 
->prepare("UPDATE user 
      SET reputation = reputation + 15 
      WHERE id = ?") 
->execute(array($new_author)); 

Я хочу знать, я могу сделать это один единственный запрос? Я имею в виду, могу ли я как - 15, так и + 15 в столбце reputation для двух пользователей по тому же запросу?

+3

да, но его умнее использовать 2 –

+0

@Dagon Почему два раздельных запроса лучше? Я думаю, что один запрос намного быстрее. –

+3

отладка, откаты, ремонтопригодность. ваш «намного быстрее» будет незначителен в реальных ситуациях в 99,99%. –

ответ

2

Используйте выражение case, чтобы сделать это одним запросом.

UPDATE user 
SET reputation = case id when '123' then reputation - 15 
         when '124' then reputation + 15 
       end 
where id in ('123','124') 
+0

Спасибо ... upvote –

Смежные вопросы