Обновление нескольких строк MySQL

У меня есть стол tbl

|id|points|
 1   15
 2   35
 3   445
 4   42

Теперь, если у меня есть массив как

array (2=>10,3=>825,4=>48)

И я хочу изменить точки так, чтобы tbl выглядит так

|id|points|
 1   15
 2   10
 3   825
 4   48

Я могу изменить значения, используя несколько запросов, но кто-нибудь может показать, как это сделать с помощью одного запроса?

2 ответа

Решение

Используйте регистр...

Update tbl
set points = CASE 
  WHEN ID = 1 then 05 
  when ID = 2 then 10 
  when ID = 3 then 825 
  when ID = 4 then 48 END

Рабочая скрипка: http://sqlfiddle.com/

Сначала вы должны загрузить свой массив в темп. Таблица. Давайте назовем это new_list, чем вы можете сделать что-то вроде

UPDATE table as t
SET points = (SELECT points FROM new_list WHERE t.id = new_list.id)

Честно говоря, я понятия не имею, работает ли это на MySQL, поэтому вам, возможно, придется подумать.

Похоже, что данные находятся внутри массива PHP, я думаю, что может быть что-то вроде

UPDATE table SET points = $points WHERE id = $id1
UPDATE table SET points = $points WHERE id = $id2
UPDATE table SET points = $points WHERE id = $id3
Другие вопросы по тегам